1#!/usr/local/bin/python3.8
2from __future__ import (absolute_import, division, print_function)
3# Copyright 2019-2020 Fortinet, Inc.
4#
5# This program is free software: you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation, either version 3 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program.  If not, see <https://www.gnu.org/licenses/>.
17
18__metaclass__ = type
19
20ANSIBLE_METADATA = {'status': ['preview'],
21                    'supported_by': 'community',
22                    'metadata_version': '1.1'}
23
24DOCUMENTATION = '''
25---
26module: fortios_firewall_mms_profile
27short_description: Configure MMS profiles in Fortinet's FortiOS and FortiGate.
28description:
29    - This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the
30      user to set and modify firewall feature and mms_profile category.
31      Examples include all parameters and values need to be adjusted to datasources before usage.
32      Tested with FOS v6.0.0
33version_added: "2.10"
34author:
35    - Link Zheng (@chillancezen)
36    - Jie Xue (@JieX19)
37    - Hongbin Lu (@fgtdev-hblu)
38    - Frank Shen (@frankshen01)
39    - Miguel Angel Munoz (@mamunozgonzalez)
40    - Nicolas Thomas (@thomnico)
41notes:
42    - Legacy fortiosapi has been deprecated, httpapi is the preferred way to run playbooks
43
44requirements:
45    - ansible>=2.9.0
46options:
47    access_token:
48        description:
49            - Token-based authentication.
50              Generated from GUI of Fortigate.
51        type: str
52        required: false
53    enable_log:
54        description:
55            - Enable/Disable logging for task.
56        type: bool
57        required: false
58        default: false
59    vdom:
60        description:
61            - Virtual domain, among those defined previously. A vdom is a
62              virtual instance of the FortiGate that can be configured and
63              used as a different unit.
64        type: str
65        default: root
66
67    state:
68        description:
69            - Indicates whether to create or remove the object.
70        type: str
71        required: true
72        choices:
73            - present
74            - absent
75    firewall_mms_profile:
76        description:
77            - Configure MMS profiles.
78        default: null
79        type: dict
80        suboptions:
81            avnotificationtable:
82                description:
83                    - AntiVirus notification table ID. Source antivirus.notification.id.
84                type: int
85            bwordtable:
86                description:
87                    - MMS banned word table ID. Source webfilter.content.id.
88                type: int
89            carrier_endpoint_prefix:
90                description:
91                    - Enable/disable prefixing of end point values.
92                type: str
93                choices:
94                    - enable
95                    - disable
96            carrier_endpoint_prefix_range_max:
97                description:
98                    - Maximum length of end point value that can be prefixed (1 - 48).
99                type: int
100            carrier_endpoint_prefix_range_min:
101                description:
102                    - Minimum end point length to be prefixed (1 - 48).
103                type: int
104            carrier_endpoint_prefix_string:
105                description:
106                    - String with which to prefix End point values.
107                type: str
108            carrierendpointbwltable:
109                description:
110                    - Carrier end point filter table ID. Source firewall.carrier-endpoint-bwl.id.
111                type: int
112            comment:
113                description:
114                    - Comment.
115                type: str
116            dupe:
117                description:
118                    - Duplicate configuration.
119                type: list
120                suboptions:
121                    action1:
122                        description:
123                            - Action to take when threshold reached.
124                        type: list
125                        choices:
126                            - block
127                            - archive
128                            - log
129                            - archive-first
130                            - alert-notif
131                    action2:
132                        description:
133                            - Action to take when threshold reached.
134                        type: list
135                        choices:
136                            - block
137                            - archive
138                            - log
139                            - archive-first
140                            - alert-notif
141                    action3:
142                        description:
143                            - Action to take when threshold reached.
144                        type: list
145                        choices:
146                            - block
147                            - archive
148                            - log
149                            - archive-first
150                            - alert-notif
151                    block_time1:
152                        description:
153                            - Duration for which action takes effect (0 - 35791 min).
154                        type: int
155                    block_time2:
156                        description:
157                            - Duration for which action takes effect (0 - 35791 min).
158                        type: int
159                    block_time3:
160                        description:
161                            - Duration action takes effect (0 - 35791 min).
162                        type: int
163                    limit1:
164                        description:
165                            - Maximum number of messages allowed.
166                        type: int
167                    limit2:
168                        description:
169                            - Maximum number of messages allowed.
170                        type: int
171                    limit3:
172                        description:
173                            - Maximum number of messages allowed.
174                        type: int
175                    protocol:
176                        description:
177                            - Protocol.
178                        required: true
179                        type: str
180                    status1:
181                        description:
182                            - Enable/disable status1 detection.
183                        type: str
184                        choices:
185                            - enable
186                            - disable
187                    status2:
188                        description:
189                            - Enable/disable status2 detection.
190                        type: str
191                        choices:
192                            - enable
193                            - disable
194                    status3:
195                        description:
196                            - Enable/disable status3 detection.
197                        type: str
198                        choices:
199                            - enable
200                            - disable
201                    window1:
202                        description:
203                            - Window to count messages over (1 - 2880 min).
204                        type: int
205                    window2:
206                        description:
207                            - Window to count messages over (1 - 2880 min).
208                        type: int
209                    window3:
210                        description:
211                            - Window to count messages over (1 - 2880 min).
212                        type: int
213            extended_utm_log:
214                description:
215                    - Enable/disable detailed UTM log messages.
216                type: str
217            flood:
218                description:
219                    - Flood configuration.
220                type: list
221                suboptions:
222                    action1:
223                        description:
224                            - Action to take when threshold reached.
225                        type: list
226                        choices:
227                            - block
228                            - archive
229                            - log
230                            - archive-first
231                            - alert-notif
232                    action2:
233                        description:
234                            - Action to take when threshold reached.
235                        type: list
236                        choices:
237                            - block
238                            - archive
239                            - log
240                            - archive-first
241                            - alert-notif
242                    action3:
243                        description:
244                            - Action to take when threshold reached.
245                        type: list
246                        choices:
247                            - block
248                            - archive
249                            - log
250                            - archive-first
251                            - alert-notif
252                    block_time1:
253                        description:
254                            - Duration for which action takes effect (0 - 35791 min).
255                        type: int
256                    block_time2:
257                        description:
258                            - Duration for which action takes effect (0 - 35791 min).
259                        type: int
260                    block_time3:
261                        description:
262                            - Duration action takes effect (0 - 35791 min).
263                        type: int
264                    limit1:
265                        description:
266                            - Maximum number of messages allowed.
267                        type: int
268                    limit2:
269                        description:
270                            - Maximum number of messages allowed.
271                        type: int
272                    limit3:
273                        description:
274                            - Maximum number of messages allowed.
275                        type: int
276                    protocol:
277                        description:
278                            - Protocol.
279                        required: true
280                        type: str
281                    status1:
282                        description:
283                            - Enable/disable status1 detection.
284                        type: str
285                        choices:
286                            - enable
287                            - disable
288                    status2:
289                        description:
290                            - Enable/disable status2 detection.
291                        type: str
292                        choices:
293                            - enable
294                            - disable
295                    status3:
296                        description:
297                            - Enable/disable status3 detection.
298                        type: str
299                        choices:
300                            - enable
301                            - disable
302                    window1:
303                        description:
304                            - Window to count messages over (1 - 2880 min).
305                        type: int
306                    window2:
307                        description:
308                            - Window to count messages over (1 - 2880 min).
309                        type: int
310                    window3:
311                        description:
312                            - Window to count messages over (1 - 2880 min).
313                        type: int
314            mm1:
315                description:
316                    - MM1 options.
317                type: list
318                choices:
319                    - avmonitor
320                    - oversize
321                    - quarantine
322                    - scan
323                    - bannedword
324                    - chunkedbypass
325                    - clientcomfort
326                    - servercomfort
327                    - carrier-endpoint-bwl
328                    - remove-blocked
329                    - mms-checksum
330            mm1_addr_hdr:
331                description:
332                    - HTTP header field (for MM1) containing user address.
333                type: str
334            mm1_addr_source:
335                description:
336                    - Source for MM1 user address.
337                type: str
338                choices:
339                    - http-header
340                    - cookie
341            mm1_convert_hex:
342                description:
343                    - Enable/disable converting user address from HEX string for MM1.
344                type: str
345                choices:
346                    - enable
347                    - disable
348            mm1_outbreak_prevention:
349                description:
350                    - Enable FortiGuard Virus Outbreak Prevention service.
351                type: str
352                choices:
353                    - disabled
354                    - files
355                    - full-archive
356            mm1_retr_dupe:
357                description:
358                    - Enable/disable duplicate scanning of MM1 retr.
359                type: str
360                choices:
361                    - enable
362                    - disable
363            mm1_retrieve_scan:
364                description:
365                    - Enable/disable scanning on MM1 retrieve configuration messages.
366                type: str
367                choices:
368                    - enable
369                    - disable
370            mm1comfortamount:
371                description:
372                    - MM1 comfort amount (0 - 4294967295).
373                type: int
374            mm1comfortinterval:
375                description:
376                    - MM1 comfort interval (0 - 4294967295).
377                type: int
378            mm1oversizelimit:
379                description:
380                    - Maximum file size to scan (1 - 819200 kB).
381                type: int
382            mm3:
383                description:
384                    - MM3 options.
385                type: list
386                choices:
387                    - avmonitor
388                    - oversize
389                    - quarantine
390                    - scan
391                    - bannedword
392                    - fragmail
393                    - splice
394                    - carrier-endpoint-bwl
395                    - remove-blocked
396                    - mms-checksum
397            mm3_outbreak_prevention:
398                description:
399                    - Enable FortiGuard Virus Outbreak Prevention service.
400                type: str
401                choices:
402                    - disabled
403                    - files
404                    - full-archive
405            mm3oversizelimit:
406                description:
407                    - Maximum file size to scan (1 - 819200 kB).
408                type: int
409            mm4:
410                description:
411                    - MM4 options.
412                type: list
413                choices:
414                    - avmonitor
415                    - oversize
416                    - quarantine
417                    - scan
418                    - bannedword
419                    - fragmail
420                    - splice
421                    - carrier-endpoint-bwl
422                    - remove-blocked
423                    - mms-checksum
424            mm4_outbreak_prevention:
425                description:
426                    - Enable FortiGuard Virus Outbreak Prevention service.
427                type: str
428                choices:
429                    - disabled
430                    - files
431                    - full-archive
432            mm4oversizelimit:
433                description:
434                    - Maximum file size to scan (1 - 819200 kB).
435                type: int
436            mm7:
437                description:
438                    - MM7 options.
439                type: list
440                choices:
441                    - avmonitor
442                    - oversize
443                    - quarantine
444                    - scan
445                    - bannedword
446                    - chunkedbypass
447                    - clientcomfort
448                    - servercomfort
449                    - carrier-endpoint-bwl
450                    - remove-blocked
451                    - mms-checksum
452            mm7_addr_hdr:
453                description:
454                    - HTTP header field (for MM7) containing user address.
455                type: str
456            mm7_addr_source:
457                description:
458                    - Source for MM7 user address.
459                type: str
460                choices:
461                    - http-header
462                    - cookie
463            mm7_convert_hex:
464                description:
465                    - Enable/disable conversion of user address from HEX string for MM7.
466                type: str
467                choices:
468                    - enable
469                    - disable
470            mm7_outbreak_prevention:
471                description:
472                    - Enable FortiGuard Virus Outbreak Prevention service.
473                type: str
474                choices:
475                    - disabled
476                    - files
477                    - full-archive
478            mm7comfortamount:
479                description:
480                    - MM7 comfort amount (0 - 4294967295).
481                type: int
482            mm7comfortinterval:
483                description:
484                    - MM7 comfort interval (0 - 4294967295).
485                type: int
486            mm7oversizelimit:
487                description:
488                    - Maximum file size to scan (1 - 819200 kB).
489                type: int
490            mms_antispam_mass_log:
491                description:
492                    - Enable/disable logging for MMS antispam mass.
493                type: str
494                choices:
495                    - enable
496                    - disable
497            mms_av_block_log:
498                description:
499                    - Enable/disable logging for MMS antivirus file blocking.
500                type: str
501                choices:
502                    - enable
503                    - disable
504            mms_av_oversize_log:
505                description:
506                    - Enable/disable logging for MMS antivirus oversize file blocking.
507                type: str
508                choices:
509                    - enable
510                    - disable
511            mms_av_virus_log:
512                description:
513                    - Enable/disable logging for MMS antivirus scanning.
514                type: str
515                choices:
516                    - enable
517                    - disable
518            mms_carrier_endpoint_filter_log:
519                description:
520                    - Enable/disable logging for MMS end point filter blocking.
521                type: str
522                choices:
523                    - enable
524                    - disable
525            mms_checksum_log:
526                description:
527                    - Enable/disable MMS content checksum logging.
528                type: str
529                choices:
530                    - enable
531                    - disable
532            mms_checksum_table:
533                description:
534                    - MMS content checksum table ID. Source antivirus.mms-checksum.id.
535                type: int
536            mms_notification_log:
537                description:
538                    - Enable/disable logging for MMS notification messages.
539                type: str
540                choices:
541                    - enable
542                    - disable
543            mms_web_content_log:
544                description:
545                    - Enable/disable logging for MMS web content blocking.
546                type: str
547                choices:
548                    - enable
549                    - disable
550            mmsbwordthreshold:
551                description:
552                    - MMS banned word threshold.
553                type: int
554            name:
555                description:
556                    - Profile name.
557                required: true
558                type: str
559            notif_msisdn:
560                description:
561                    - Notification for MSISDNs.
562                type: list
563                suboptions:
564                    msisdn:
565                        description:
566                            - Recipient MSISDN.
567                        required: true
568                        type: str
569                    threshold:
570                        description:
571                            - Thresholds on which this MSISDN will receive an alert.
572                        type: str
573                        choices:
574                            - flood-thresh-1
575                            - flood-thresh-2
576                            - flood-thresh-3
577                            - dupe-thresh-1
578                            - dupe-thresh-2
579                            - dupe-thresh-3
580            notification:
581                description:
582                    - Notification configuration.
583                type: list
584                suboptions:
585                    alert_int:
586                        description:
587                            - Alert notification send interval.
588                        type: int
589                    alert_int_mode:
590                        description:
591                            - Alert notification interval mode.
592                        type: str
593                        choices:
594                            - hours
595                            - minutes
596                    alert_src_msisdn:
597                        description:
598                            - Specify from address for alert messages.
599                        type: str
600                    alert_status:
601                        description:
602                            - Alert notification status.
603                        type: str
604                        choices:
605                            - enable
606                            - disable
607                    bword_int:
608                        description:
609                            - Banned word notification send interval.
610                        type: int
611                    bword_int_mode:
612                        description:
613                            - Banned word notification interval mode.
614                        type: str
615                        choices:
616                            - hours
617                            - minutes
618                    bword_status:
619                        description:
620                            - Banned word notification status.
621                        type: str
622                        choices:
623                            - enable
624                            - disable
625                    carrier_endpoint_bwl_int:
626                        description:
627                            - Carrier end point black/white list notification send interval.
628                        type: int
629                    carrier_endpoint_bwl_int_mode:
630                        description:
631                            - Carrier end point black/white list notification interval mode.
632                        type: str
633                        choices:
634                            - hours
635                            - minutes
636                    carrier_endpoint_bwl_status:
637                        description:
638                            - Carrier end point black/white list notification status.
639                        type: str
640                        choices:
641                            - enable
642                            - disable
643                    days_allowed:
644                        description:
645                            - Weekdays on which notification messages may be sent.
646                        type: list
647                        choices:
648                            - sunday
649                            - monday
650                            - tuesday
651                            - wednesday
652                            - thursday
653                            - friday
654                            - saturday
655                    detect_server:
656                        description:
657                            - Enable/disable automatic server address determination.
658                        type: str
659                        choices:
660                            - enable
661                            - disable
662                    dupe_int:
663                        description:
664                            - Duplicate notification send interval.
665                        type: int
666                    dupe_int_mode:
667                        description:
668                            - Duplicate notification interval mode.
669                        type: str
670                        choices:
671                            - hours
672                            - minutes
673                    dupe_status:
674                        description:
675                            - Duplicate notification status.
676                        type: str
677                        choices:
678                            - enable
679                            - disable
680                    file_block_int:
681                        description:
682                            - File block notification send interval.
683                        type: int
684                    file_block_int_mode:
685                        description:
686                            - File block notification interval mode.
687                        type: str
688                        choices:
689                            - hours
690                            - minutes
691                    file_block_status:
692                        description:
693                            - File block notification status.
694                        type: str
695                        choices:
696                            - enable
697                            - disable
698                    flood_int:
699                        description:
700                            - Flood notification send interval.
701                        type: int
702                    flood_int_mode:
703                        description:
704                            - Flood notification interval mode.
705                        type: str
706                        choices:
707                            - hours
708                            - minutes
709                    flood_status:
710                        description:
711                            - Flood notification status.
712                        type: str
713                        choices:
714                            - enable
715                            - disable
716                    from_in_header:
717                        description:
718                            - Enable/disable insertion of from address in HTTP header.
719                        type: str
720                        choices:
721                            - enable
722                            - disable
723                    mms_checksum_int:
724                        description:
725                            - MMS checksum notification send interval.
726                        type: int
727                    mms_checksum_int_mode:
728                        description:
729                            - MMS checksum notification interval mode.
730                        type: str
731                        choices:
732                            - hours
733                            - minutes
734                    mms_checksum_status:
735                        description:
736                            - MMS checksum notification status.
737                        type: str
738                        choices:
739                            - enable
740                            - disable
741                    mmsc_hostname:
742                        description:
743                            - Host name or IP address of the MMSC.
744                        type: str
745                    mmsc_password:
746                        description:
747                            - Password required for authentication with the MMSC.
748                        type: str
749                    mmsc_port:
750                        description:
751                            - Port used on the MMSC for sending MMS messages (1 - 65535).
752                        type: int
753                    mmsc_url:
754                        description:
755                            - URL used on the MMSC for sending MMS messages.
756                        type: str
757                    mmsc_username:
758                        description:
759                            - User name required for authentication with the MMSC.
760                        type: str
761                    msg_protocol:
762                        description:
763                            - Protocol to use for sending notification messages.
764                        type: str
765                        choices:
766                            - mm1
767                            - mm3
768                            - mm4
769                            - mm7
770                    msg_type:
771                        description:
772                            - MM7 message type.
773                        type: str
774                        choices:
775                            - submit-req
776                            - deliver-req
777                    protocol:
778                        description:
779                            - Protocol.
780                        required: true
781                        type: str
782                    rate_limit:
783                        description:
784                            - Rate limit for sending notification messages (0 - 250).
785                        type: int
786                    tod_window_duration:
787                        description:
788                            - Time of day window duration.
789                        type: str
790                    tod_window_end:
791                        description:
792                            - Obsolete.
793                        type: str
794                    tod_window_start:
795                        description:
796                            - Time of day window start.
797                        type: str
798                    user_domain:
799                        description:
800                            - Domain name to which the user addresses belong.
801                        type: str
802                    vas_id:
803                        description:
804                            - VAS identifier.
805                        type: str
806                    vasp_id:
807                        description:
808                            - VASP identifier.
809                        type: str
810                    virus_int:
811                        description:
812                            - Virus notification send interval.
813                        type: int
814                    virus_int_mode:
815                        description:
816                            - Virus notification interval mode.
817                        type: str
818                        choices:
819                            - hours
820                            - minutes
821                    virus_status:
822                        description:
823                            - Virus notification status.
824                        type: str
825                        choices:
826                            - enable
827                            - disable
828            outbreak_prevention:
829                description:
830                    - Configure Virus Outbreak Prevention settings.
831                type: dict
832                suboptions:
833                    external_blocklist:
834                        description:
835                            - Enable/disable external malware blocklist.
836                        type: str
837                        choices:
838                            - disable
839                            - enable
840                    ftgd_service:
841                        description:
842                            - Enable/disable FortiGuard Virus outbreak prevention service.
843                        type: str
844                        choices:
845                            - disable
846                            - enable
847            remove_blocked_const_length:
848                description:
849                    - Enable/disable MMS replacement of blocked file constant length.
850                type: str
851                choices:
852                    - enable
853                    - disable
854            replacemsg_group:
855                description:
856                    - Replacement message group. Source system.replacemsg-group.name.
857                type: str
858'''
859
860EXAMPLES = '''
861- hosts: fortigates
862  collections:
863    - fortinet.fortios
864  connection: httpapi
865  vars:
866   vdom: "root"
867   ansible_httpapi_use_ssl: yes
868   ansible_httpapi_validate_certs: no
869   ansible_httpapi_port: 443
870  tasks:
871  - name: Configure MMS profiles.
872    fortios_firewall_mms_profile:
873      vdom:  "{{ vdom }}"
874      state: "present"
875      access_token: "<your_own_value>"
876      firewall_mms_profile:
877        avnotificationtable: "3 (source antivirus.notification.id)"
878        bwordtable: "4 (source webfilter.content.id)"
879        carrier_endpoint_prefix: "enable"
880        carrier_endpoint_prefix_range_max: "6"
881        carrier_endpoint_prefix_range_min: "7"
882        carrier_endpoint_prefix_string: "<your_own_value>"
883        carrierendpointbwltable: "9 (source firewall.carrier-endpoint-bwl.id)"
884        comment: "Comment."
885        dupe:
886         -
887            action1: "block"
888            action2: "block"
889            action3: "block"
890            block_time1: "15"
891            block_time2: "16"
892            block_time3: "17"
893            limit1: "18"
894            limit2: "19"
895            limit3: "20"
896            protocol: "<your_own_value>"
897            status1: "enable"
898            status2: "enable"
899            status3: "enable"
900            window1: "25"
901            window2: "26"
902            window3: "27"
903        extended_utm_log: "<your_own_value>"
904        flood:
905         -
906            action1: "block"
907            action2: "block"
908            action3: "block"
909            block_time1: "33"
910            block_time2: "34"
911            block_time3: "35"
912            limit1: "36"
913            limit2: "37"
914            limit3: "38"
915            protocol: "<your_own_value>"
916            status1: "enable"
917            status2: "enable"
918            status3: "enable"
919            window1: "43"
920            window2: "44"
921            window3: "45"
922        mm1: "avmonitor"
923        mm1_addr_hdr: "<your_own_value>"
924        mm1_addr_source: "http-header"
925        mm1_convert_hex: "enable"
926        mm1_outbreak_prevention: "disabled"
927        mm1_retr_dupe: "enable"
928        mm1_retrieve_scan: "enable"
929        mm1comfortamount: "53"
930        mm1comfortinterval: "54"
931        mm1oversizelimit: "55"
932        mm3: "avmonitor"
933        mm3_outbreak_prevention: "disabled"
934        mm3oversizelimit: "58"
935        mm4: "avmonitor"
936        mm4_outbreak_prevention: "disabled"
937        mm4oversizelimit: "61"
938        mm7: "avmonitor"
939        mm7_addr_hdr: "<your_own_value>"
940        mm7_addr_source: "http-header"
941        mm7_convert_hex: "enable"
942        mm7_outbreak_prevention: "disabled"
943        mm7comfortamount: "67"
944        mm7comfortinterval: "68"
945        mm7oversizelimit: "69"
946        mms_antispam_mass_log: "enable"
947        mms_av_block_log: "enable"
948        mms_av_oversize_log: "enable"
949        mms_av_virus_log: "enable"
950        mms_carrier_endpoint_filter_log: "enable"
951        mms_checksum_log: "enable"
952        mms_checksum_table: "76 (source antivirus.mms-checksum.id)"
953        mms_notification_log: "enable"
954        mms_web_content_log: "enable"
955        mmsbwordthreshold: "79"
956        name: "default_name_80"
957        notif_msisdn:
958         -
959            msisdn: "<your_own_value>"
960            threshold: "flood-thresh-1"
961        notification:
962         -
963            alert_int: "85"
964            alert_int_mode: "hours"
965            alert_src_msisdn: "<your_own_value>"
966            alert_status: "enable"
967            bword_int: "89"
968            bword_int_mode: "hours"
969            bword_status: "enable"
970            carrier_endpoint_bwl_int: "92"
971            carrier_endpoint_bwl_int_mode: "hours"
972            carrier_endpoint_bwl_status: "enable"
973            days_allowed: "sunday"
974            detect_server: "enable"
975            dupe_int: "97"
976            dupe_int_mode: "hours"
977            dupe_status: "enable"
978            file_block_int: "100"
979            file_block_int_mode: "hours"
980            file_block_status: "enable"
981            flood_int: "103"
982            flood_int_mode: "hours"
983            flood_status: "enable"
984            from_in_header: "enable"
985            mms_checksum_int: "107"
986            mms_checksum_int_mode: "hours"
987            mms_checksum_status: "enable"
988            mmsc_hostname: "myhostname"
989            mmsc_password: "<your_own_value>"
990            mmsc_port: "112"
991            mmsc_url: "<your_own_value>"
992            mmsc_username: "<your_own_value>"
993            msg_protocol: "mm1"
994            msg_type: "submit-req"
995            protocol: "<your_own_value>"
996            rate_limit: "118"
997            tod_window_duration: "<your_own_value>"
998            tod_window_end: "<your_own_value>"
999            tod_window_start: "<your_own_value>"
1000            user_domain: "<your_own_value>"
1001            vas_id: "<your_own_value>"
1002            vasp_id: "<your_own_value>"
1003            virus_int: "125"
1004            virus_int_mode: "hours"
1005            virus_status: "enable"
1006        outbreak_prevention:
1007            external_blocklist: "disable"
1008            ftgd_service: "disable"
1009        remove_blocked_const_length: "enable"
1010        replacemsg_group: "<your_own_value> (source system.replacemsg-group.name)"
1011
1012'''
1013
1014RETURN = '''
1015build:
1016  description: Build number of the fortigate image
1017  returned: always
1018  type: str
1019  sample: '1547'
1020http_method:
1021  description: Last method used to provision the content into FortiGate
1022  returned: always
1023  type: str
1024  sample: 'PUT'
1025http_status:
1026  description: Last result given by FortiGate on last operation applied
1027  returned: always
1028  type: str
1029  sample: "200"
1030mkey:
1031  description: Master key (id) used in the last call to FortiGate
1032  returned: success
1033  type: str
1034  sample: "id"
1035name:
1036  description: Name of the table used to fulfill the request
1037  returned: always
1038  type: str
1039  sample: "urlfilter"
1040path:
1041  description: Path of the table used to fulfill the request
1042  returned: always
1043  type: str
1044  sample: "webfilter"
1045revision:
1046  description: Internal revision number
1047  returned: always
1048  type: str
1049  sample: "17.0.2.10658"
1050serial:
1051  description: Serial number of the unit
1052  returned: always
1053  type: str
1054  sample: "FGVMEVYYQT3AB5352"
1055status:
1056  description: Indication of the operation's result
1057  returned: always
1058  type: str
1059  sample: "success"
1060vdom:
1061  description: Virtual domain used
1062  returned: always
1063  type: str
1064  sample: "root"
1065version:
1066  description: Version of the FortiGate
1067  returned: always
1068  type: str
1069  sample: "v5.6.3"
1070
1071'''
1072from ansible.module_utils.basic import AnsibleModule
1073from ansible.module_utils.connection import Connection
1074from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import FortiOSHandler
1075from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_legacy_fortiosapi
1076from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import schema_to_module_spec
1077from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.fortios import check_schema_versioning
1078from ansible_collections.fortinet.fortios.plugins.module_utils.fortimanager.common import FAIL_SOCKET_MSG
1079from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import is_same_comparison
1080from ansible_collections.fortinet.fortios.plugins.module_utils.fortios.comparison import serialize
1081
1082
1083def filter_firewall_mms_profile_data(json):
1084    option_list = ['avnotificationtable', 'bwordtable', 'carrier_endpoint_prefix',
1085                   'carrier_endpoint_prefix_range_max', 'carrier_endpoint_prefix_range_min', 'carrier_endpoint_prefix_string',
1086                   'carrierendpointbwltable', 'comment', 'dupe',
1087                   'extended_utm_log', 'flood', 'mm1',
1088                   'mm1_addr_hdr', 'mm1_addr_source', 'mm1_convert_hex',
1089                   'mm1_outbreak_prevention', 'mm1_retr_dupe', 'mm1_retrieve_scan',
1090                   'mm1comfortamount', 'mm1comfortinterval', 'mm1oversizelimit',
1091                   'mm3', 'mm3_outbreak_prevention', 'mm3oversizelimit',
1092                   'mm4', 'mm4_outbreak_prevention', 'mm4oversizelimit',
1093                   'mm7', 'mm7_addr_hdr', 'mm7_addr_source',
1094                   'mm7_convert_hex', 'mm7_outbreak_prevention', 'mm7comfortamount',
1095                   'mm7comfortinterval', 'mm7oversizelimit', 'mms_antispam_mass_log',
1096                   'mms_av_block_log', 'mms_av_oversize_log', 'mms_av_virus_log',
1097                   'mms_carrier_endpoint_filter_log', 'mms_checksum_log', 'mms_checksum_table',
1098                   'mms_notification_log', 'mms_web_content_log', 'mmsbwordthreshold',
1099                   'name', 'notif_msisdn', 'notification',
1100                   'outbreak_prevention', 'remove_blocked_const_length', 'replacemsg_group']
1101    dictionary = {}
1102
1103    for attribute in option_list:
1104        if attribute in json and json[attribute] is not None:
1105            dictionary[attribute] = json[attribute]
1106
1107    return dictionary
1108
1109
1110def flatten_single_path(data, path, index):
1111    if not data or index == len(path) or path[index] not in data or not data[path[index]]:
1112        return
1113
1114    if index == len(path) - 1:
1115        data[path[index]] = ' '.join(str(elem) for elem in data[path[index]])
1116    elif isinstance(data[path[index]], list):
1117        for value in data[path[index]]:
1118            flatten_single_path(value, path, index + 1)
1119    else:
1120        flatten_single_path(data[path[index]], path, index + 1)
1121
1122
1123def flatten_multilists_attributes(data):
1124    multilist_attrs = [[u'mm4'], [u'mm7'], [u'mm1'], [u'mm3'], [u'dupe', u'action1'], [u'dupe', u'action3'], [u'dupe', u'action2'], [u'notification',
1125                                                                                                                                     u'days_allowed'], [u'flood', u'action1'], [u'flood', u'action3'], [u'flood', u'action2'], [u'notif_msisdn', u'threshold']]
1126
1127    for attr in multilist_attrs:
1128        flatten_single_path(data, attr, 0)
1129
1130    return data
1131
1132
1133def underscore_to_hyphen(data):
1134    if isinstance(data, list):
1135        for i, elem in enumerate(data):
1136            data[i] = underscore_to_hyphen(elem)
1137    elif isinstance(data, dict):
1138        new_data = {}
1139        for k, v in data.items():
1140            new_data[k.replace('_', '-')] = underscore_to_hyphen(v)
1141        data = new_data
1142
1143    return data
1144
1145
1146def firewall_mms_profile(data, fos):
1147    vdom = data['vdom']
1148
1149    state = data['state']
1150
1151    firewall_mms_profile_data = data['firewall_mms_profile']
1152    firewall_mms_profile_data = flatten_multilists_attributes(firewall_mms_profile_data)
1153    filtered_data = underscore_to_hyphen(filter_firewall_mms_profile_data(firewall_mms_profile_data))
1154
1155    if state == "present" or state is True:
1156        return fos.set('firewall',
1157                       'mms-profile',
1158                       data=filtered_data,
1159                       vdom=vdom)
1160
1161    elif state == "absent":
1162        return fos.delete('firewall',
1163                          'mms-profile',
1164                          mkey=filtered_data['name'],
1165                          vdom=vdom)
1166    else:
1167        fos._module.fail_json(msg='state must be present or absent!')
1168
1169
1170def is_successful_status(status):
1171    return status['status'] == "success" or \
1172        status['http_method'] == "DELETE" and status['http_status'] == 404
1173
1174
1175def fortios_firewall(data, fos):
1176
1177    if data['firewall_mms_profile']:
1178        resp = firewall_mms_profile(data, fos)
1179    else:
1180        fos._module.fail_json(msg='missing task body: %s' % ('firewall_mms_profile'))
1181
1182    return not is_successful_status(resp), \
1183        resp['status'] == "success" and \
1184        (resp['revision_changed'] if 'revision_changed' in resp else True), \
1185        resp
1186
1187
1188versioned_schema = {
1189    "type": "list",
1190    "children": {
1191        "comment": {
1192            "type": "string",
1193            "revisions": {
1194                "v6.0.0": True,
1195                "v6.0.5": True,
1196                "v6.2.0": True,
1197                "v6.2.3": True,
1198                "v6.2.5": True,
1199                "v6.2.7": True,
1200                "v6.0.11": True
1201            }
1202        },
1203        "mms_antispam_mass_log": {
1204            "type": "string",
1205            "options": [
1206                {
1207                    "value": "enable",
1208                    "revisions": {
1209                        "v6.0.0": True,
1210                        "v6.0.5": True,
1211                        "v6.2.0": True,
1212                        "v6.2.3": True,
1213                        "v6.2.5": True,
1214                        "v6.2.7": True,
1215                        "v6.0.11": True
1216                    }
1217                },
1218                {
1219                    "value": "disable",
1220                    "revisions": {
1221                        "v6.0.0": True,
1222                        "v6.0.5": True,
1223                        "v6.2.0": True,
1224                        "v6.2.3": True,
1225                        "v6.2.5": True,
1226                        "v6.2.7": True,
1227                        "v6.0.11": True
1228                    }
1229                }
1230            ],
1231            "revisions": {
1232                "v6.0.0": True,
1233                "v6.0.5": True,
1234                "v6.2.0": True,
1235                "v6.2.3": True,
1236                "v6.2.5": True,
1237                "v6.2.7": True,
1238                "v6.0.11": True
1239            }
1240        },
1241        "mm1_convert_hex": {
1242            "type": "string",
1243            "options": [
1244                {
1245                    "value": "enable",
1246                    "revisions": {
1247                        "v6.0.0": True,
1248                        "v6.0.5": True,
1249                        "v6.2.0": True,
1250                        "v6.2.3": True,
1251                        "v6.2.5": True,
1252                        "v6.2.7": True,
1253                        "v6.0.11": True
1254                    }
1255                },
1256                {
1257                    "value": "disable",
1258                    "revisions": {
1259                        "v6.0.0": True,
1260                        "v6.0.5": True,
1261                        "v6.2.0": True,
1262                        "v6.2.3": True,
1263                        "v6.2.5": True,
1264                        "v6.2.7": True,
1265                        "v6.0.11": True
1266                    }
1267                }
1268            ],
1269            "revisions": {
1270                "v6.0.0": True,
1271                "v6.0.5": True,
1272                "v6.2.0": True,
1273                "v6.2.3": True,
1274                "v6.2.5": True,
1275                "v6.2.7": True,
1276                "v6.0.11": True
1277            }
1278        },
1279        "mm4": {
1280            "multiple_values": True,
1281            "type": "list",
1282            "options": [
1283                {
1284                    "value": "avmonitor",
1285                    "revisions": {
1286                        "v6.0.0": True,
1287                        "v6.0.5": True,
1288                        "v6.2.0": True,
1289                        "v6.2.3": True,
1290                        "v6.2.5": True,
1291                        "v6.2.7": True,
1292                        "v6.0.11": True
1293                    }
1294                },
1295                {
1296                    "value": "oversize",
1297                    "revisions": {
1298                        "v6.0.0": True,
1299                        "v6.0.5": True,
1300                        "v6.2.0": True,
1301                        "v6.2.3": True,
1302                        "v6.2.5": True,
1303                        "v6.2.7": True,
1304                        "v6.0.11": True
1305                    }
1306                },
1307                {
1308                    "value": "quarantine",
1309                    "revisions": {
1310                        "v6.0.0": True,
1311                        "v6.0.5": True,
1312                        "v6.2.0": True,
1313                        "v6.2.3": True,
1314                        "v6.2.5": True,
1315                        "v6.2.7": True,
1316                        "v6.0.11": True
1317                    }
1318                },
1319                {
1320                    "value": "scan",
1321                    "revisions": {
1322                        "v6.0.0": True,
1323                        "v6.0.5": True,
1324                        "v6.2.0": True,
1325                        "v6.2.3": True,
1326                        "v6.2.5": True,
1327                        "v6.2.7": True,
1328                        "v6.0.11": True
1329                    }
1330                },
1331                {
1332                    "value": "bannedword",
1333                    "revisions": {
1334                        "v6.0.0": True,
1335                        "v6.0.5": True,
1336                        "v6.2.0": True,
1337                        "v6.2.3": True,
1338                        "v6.2.5": True,
1339                        "v6.2.7": True,
1340                        "v6.0.11": True
1341                    }
1342                },
1343                {
1344                    "value": "fragmail",
1345                    "revisions": {
1346                        "v6.0.0": True,
1347                        "v6.0.5": True,
1348                        "v6.2.0": True,
1349                        "v6.2.3": True,
1350                        "v6.2.5": True,
1351                        "v6.2.7": True,
1352                        "v6.0.11": True
1353                    }
1354                },
1355                {
1356                    "value": "splice",
1357                    "revisions": {
1358                        "v6.0.0": True,
1359                        "v6.0.5": True,
1360                        "v6.2.0": True,
1361                        "v6.2.3": True,
1362                        "v6.2.5": True,
1363                        "v6.2.7": True,
1364                        "v6.0.11": True
1365                    }
1366                },
1367                {
1368                    "value": "carrier-endpoint-bwl",
1369                    "revisions": {
1370                        "v6.0.0": True,
1371                        "v6.0.5": True,
1372                        "v6.2.0": True,
1373                        "v6.2.3": True,
1374                        "v6.2.5": True,
1375                        "v6.2.7": True,
1376                        "v6.0.11": True
1377                    }
1378                },
1379                {
1380                    "value": "remove-blocked",
1381                    "revisions": {
1382                        "v6.0.0": True,
1383                        "v6.0.5": True,
1384                        "v6.2.0": True,
1385                        "v6.2.3": True,
1386                        "v6.2.5": True,
1387                        "v6.2.7": True,
1388                        "v6.0.11": True
1389                    }
1390                },
1391                {
1392                    "value": "mms-checksum",
1393                    "revisions": {
1394                        "v6.0.0": True,
1395                        "v6.0.5": True,
1396                        "v6.2.0": True,
1397                        "v6.2.3": True,
1398                        "v6.2.5": True,
1399                        "v6.2.7": True,
1400                        "v6.0.11": True
1401                    }
1402                }
1403            ],
1404            "revisions": {
1405                "v6.0.0": True,
1406                "v6.0.5": True,
1407                "v6.2.0": True,
1408                "v6.2.3": True,
1409                "v6.2.5": True,
1410                "v6.2.7": True,
1411                "v6.0.11": True
1412            }
1413        },
1414        "mm7": {
1415            "multiple_values": True,
1416            "type": "list",
1417            "options": [
1418                {
1419                    "value": "avmonitor",
1420                    "revisions": {
1421                        "v6.0.0": True,
1422                        "v6.0.5": True,
1423                        "v6.2.0": True,
1424                        "v6.2.3": True,
1425                        "v6.2.5": True,
1426                        "v6.2.7": True,
1427                        "v6.0.11": True
1428                    }
1429                },
1430                {
1431                    "value": "oversize",
1432                    "revisions": {
1433                        "v6.0.0": True,
1434                        "v6.0.5": True,
1435                        "v6.2.0": True,
1436                        "v6.2.3": True,
1437                        "v6.2.5": True,
1438                        "v6.2.7": True,
1439                        "v6.0.11": True
1440                    }
1441                },
1442                {
1443                    "value": "quarantine",
1444                    "revisions": {
1445                        "v6.0.0": True,
1446                        "v6.0.5": True,
1447                        "v6.2.0": True,
1448                        "v6.2.3": True,
1449                        "v6.2.5": True,
1450                        "v6.2.7": True,
1451                        "v6.0.11": True
1452                    }
1453                },
1454                {
1455                    "value": "scan",
1456                    "revisions": {
1457                        "v6.0.0": True,
1458                        "v6.0.5": True,
1459                        "v6.2.0": True,
1460                        "v6.2.3": True,
1461                        "v6.2.5": True,
1462                        "v6.2.7": True,
1463                        "v6.0.11": True
1464                    }
1465                },
1466                {
1467                    "value": "bannedword",
1468                    "revisions": {
1469                        "v6.0.0": True,
1470                        "v6.0.5": True,
1471                        "v6.2.0": True,
1472                        "v6.2.3": True,
1473                        "v6.2.5": True,
1474                        "v6.2.7": True,
1475                        "v6.0.11": True
1476                    }
1477                },
1478                {
1479                    "value": "chunkedbypass",
1480                    "revisions": {
1481                        "v6.0.0": True,
1482                        "v6.0.5": True,
1483                        "v6.2.0": True,
1484                        "v6.2.3": True,
1485                        "v6.2.5": True,
1486                        "v6.2.7": True,
1487                        "v6.0.11": True
1488                    }
1489                },
1490                {
1491                    "value": "clientcomfort",
1492                    "revisions": {
1493                        "v6.0.0": True,
1494                        "v6.0.5": True,
1495                        "v6.2.0": True,
1496                        "v6.2.3": True,
1497                        "v6.2.5": True,
1498                        "v6.2.7": True,
1499                        "v6.0.11": True
1500                    }
1501                },
1502                {
1503                    "value": "servercomfort",
1504                    "revisions": {
1505                        "v6.0.0": True,
1506                        "v6.0.5": True,
1507                        "v6.2.0": True,
1508                        "v6.2.3": True,
1509                        "v6.2.5": True,
1510                        "v6.2.7": True,
1511                        "v6.0.11": True
1512                    }
1513                },
1514                {
1515                    "value": "carrier-endpoint-bwl",
1516                    "revisions": {
1517                        "v6.0.0": True,
1518                        "v6.0.5": True,
1519                        "v6.2.0": True,
1520                        "v6.2.3": True,
1521                        "v6.2.5": True,
1522                        "v6.2.7": True,
1523                        "v6.0.11": True
1524                    }
1525                },
1526                {
1527                    "value": "remove-blocked",
1528                    "revisions": {
1529                        "v6.0.0": True,
1530                        "v6.0.5": True,
1531                        "v6.2.0": True,
1532                        "v6.2.3": True,
1533                        "v6.2.5": True,
1534                        "v6.2.7": True,
1535                        "v6.0.11": True
1536                    }
1537                },
1538                {
1539                    "value": "mms-checksum",
1540                    "revisions": {
1541                        "v6.0.0": True,
1542                        "v6.0.5": True,
1543                        "v6.2.0": True,
1544                        "v6.2.3": True,
1545                        "v6.2.5": True,
1546                        "v6.2.7": True,
1547                        "v6.0.11": True
1548                    }
1549                }
1550            ],
1551            "revisions": {
1552                "v6.0.0": True,
1553                "v6.0.5": True,
1554                "v6.2.0": True,
1555                "v6.2.3": True,
1556                "v6.2.5": True,
1557                "v6.2.7": True,
1558                "v6.0.11": True
1559            }
1560        },
1561        "mmsbwordthreshold": {
1562            "type": "integer",
1563            "revisions": {
1564                "v6.0.0": True,
1565                "v6.0.5": True,
1566                "v6.2.0": True,
1567                "v6.2.3": True,
1568                "v6.2.5": True,
1569                "v6.2.7": True,
1570                "v6.0.11": True
1571            }
1572        },
1573        "mm1": {
1574            "multiple_values": True,
1575            "type": "list",
1576            "options": [
1577                {
1578                    "value": "avmonitor",
1579                    "revisions": {
1580                        "v6.0.0": True,
1581                        "v6.0.5": True,
1582                        "v6.2.0": True,
1583                        "v6.2.3": True,
1584                        "v6.2.5": True,
1585                        "v6.2.7": True,
1586                        "v6.0.11": True
1587                    }
1588                },
1589                {
1590                    "value": "oversize",
1591                    "revisions": {
1592                        "v6.0.0": True,
1593                        "v6.0.5": True,
1594                        "v6.2.0": True,
1595                        "v6.2.3": True,
1596                        "v6.2.5": True,
1597                        "v6.2.7": True,
1598                        "v6.0.11": True
1599                    }
1600                },
1601                {
1602                    "value": "quarantine",
1603                    "revisions": {
1604                        "v6.0.0": True,
1605                        "v6.0.5": True,
1606                        "v6.2.0": True,
1607                        "v6.2.3": True,
1608                        "v6.2.5": True,
1609                        "v6.2.7": True,
1610                        "v6.0.11": True
1611                    }
1612                },
1613                {
1614                    "value": "scan",
1615                    "revisions": {
1616                        "v6.0.0": True,
1617                        "v6.0.5": True,
1618                        "v6.2.0": True,
1619                        "v6.2.3": True,
1620                        "v6.2.5": True,
1621                        "v6.2.7": True,
1622                        "v6.0.11": True
1623                    }
1624                },
1625                {
1626                    "value": "bannedword",
1627                    "revisions": {
1628                        "v6.0.0": True,
1629                        "v6.0.5": True,
1630                        "v6.2.0": True,
1631                        "v6.2.3": True,
1632                        "v6.2.5": True,
1633                        "v6.2.7": True,
1634                        "v6.0.11": True
1635                    }
1636                },
1637                {
1638                    "value": "chunkedbypass",
1639                    "revisions": {
1640                        "v6.0.0": True,
1641                        "v6.0.5": True,
1642                        "v6.2.0": True,
1643                        "v6.2.3": True,
1644                        "v6.2.5": True,
1645                        "v6.2.7": True,
1646                        "v6.0.11": True
1647                    }
1648                },
1649                {
1650                    "value": "clientcomfort",
1651                    "revisions": {
1652                        "v6.0.0": True,
1653                        "v6.0.5": True,
1654                        "v6.2.0": True,
1655                        "v6.2.3": True,
1656                        "v6.2.5": True,
1657                        "v6.2.7": True,
1658                        "v6.0.11": True
1659                    }
1660                },
1661                {
1662                    "value": "servercomfort",
1663                    "revisions": {
1664                        "v6.0.0": True,
1665                        "v6.0.5": True,
1666                        "v6.2.0": True,
1667                        "v6.2.3": True,
1668                        "v6.2.5": True,
1669                        "v6.2.7": True,
1670                        "v6.0.11": True
1671                    }
1672                },
1673                {
1674                    "value": "carrier-endpoint-bwl",
1675                    "revisions": {
1676                        "v6.0.0": True,
1677                        "v6.0.5": True,
1678                        "v6.2.0": True,
1679                        "v6.2.3": True,
1680                        "v6.2.5": True,
1681                        "v6.2.7": True,
1682                        "v6.0.11": True
1683                    }
1684                },
1685                {
1686                    "value": "remove-blocked",
1687                    "revisions": {
1688                        "v6.0.0": True,
1689                        "v6.0.5": True,
1690                        "v6.2.0": True,
1691                        "v6.2.3": True,
1692                        "v6.2.5": True,
1693                        "v6.2.7": True,
1694                        "v6.0.11": True
1695                    }
1696                },
1697                {
1698                    "value": "mms-checksum",
1699                    "revisions": {
1700                        "v6.0.0": True,
1701                        "v6.0.5": True,
1702                        "v6.2.0": True,
1703                        "v6.2.3": True,
1704                        "v6.2.5": True,
1705                        "v6.2.7": True,
1706                        "v6.0.11": True
1707                    }
1708                }
1709            ],
1710            "revisions": {
1711                "v6.0.0": True,
1712                "v6.0.5": True,
1713                "v6.2.0": True,
1714                "v6.2.3": True,
1715                "v6.2.5": True,
1716                "v6.2.7": True,
1717                "v6.0.11": True
1718            }
1719        },
1720        "mm3": {
1721            "multiple_values": True,
1722            "type": "list",
1723            "options": [
1724                {
1725                    "value": "avmonitor",
1726                    "revisions": {
1727                        "v6.0.0": True,
1728                        "v6.0.5": True,
1729                        "v6.2.0": True,
1730                        "v6.2.3": True,
1731                        "v6.2.5": True,
1732                        "v6.2.7": True,
1733                        "v6.0.11": True
1734                    }
1735                },
1736                {
1737                    "value": "oversize",
1738                    "revisions": {
1739                        "v6.0.0": True,
1740                        "v6.0.5": True,
1741                        "v6.2.0": True,
1742                        "v6.2.3": True,
1743                        "v6.2.5": True,
1744                        "v6.2.7": True,
1745                        "v6.0.11": True
1746                    }
1747                },
1748                {
1749                    "value": "quarantine",
1750                    "revisions": {
1751                        "v6.0.0": True,
1752                        "v6.0.5": True,
1753                        "v6.2.0": True,
1754                        "v6.2.3": True,
1755                        "v6.2.5": True,
1756                        "v6.2.7": True,
1757                        "v6.0.11": True
1758                    }
1759                },
1760                {
1761                    "value": "scan",
1762                    "revisions": {
1763                        "v6.0.0": True,
1764                        "v6.0.5": True,
1765                        "v6.2.0": True,
1766                        "v6.2.3": True,
1767                        "v6.2.5": True,
1768                        "v6.2.7": True,
1769                        "v6.0.11": True
1770                    }
1771                },
1772                {
1773                    "value": "bannedword",
1774                    "revisions": {
1775                        "v6.0.0": True,
1776                        "v6.0.5": True,
1777                        "v6.2.0": True,
1778                        "v6.2.3": True,
1779                        "v6.2.5": True,
1780                        "v6.2.7": True,
1781                        "v6.0.11": True
1782                    }
1783                },
1784                {
1785                    "value": "fragmail",
1786                    "revisions": {
1787                        "v6.0.0": True,
1788                        "v6.0.5": True,
1789                        "v6.2.0": True,
1790                        "v6.2.3": True,
1791                        "v6.2.5": True,
1792                        "v6.2.7": True,
1793                        "v6.0.11": True
1794                    }
1795                },
1796                {
1797                    "value": "splice",
1798                    "revisions": {
1799                        "v6.0.0": True,
1800                        "v6.0.5": True,
1801                        "v6.2.0": True,
1802                        "v6.2.3": True,
1803                        "v6.2.5": True,
1804                        "v6.2.7": True,
1805                        "v6.0.11": True
1806                    }
1807                },
1808                {
1809                    "value": "carrier-endpoint-bwl",
1810                    "revisions": {
1811                        "v6.0.0": True,
1812                        "v6.0.5": True,
1813                        "v6.2.0": True,
1814                        "v6.2.3": True,
1815                        "v6.2.5": True,
1816                        "v6.2.7": True,
1817                        "v6.0.11": True
1818                    }
1819                },
1820                {
1821                    "value": "remove-blocked",
1822                    "revisions": {
1823                        "v6.0.0": True,
1824                        "v6.0.5": True,
1825                        "v6.2.0": True,
1826                        "v6.2.3": True,
1827                        "v6.2.5": True,
1828                        "v6.2.7": True,
1829                        "v6.0.11": True
1830                    }
1831                },
1832                {
1833                    "value": "mms-checksum",
1834                    "revisions": {
1835                        "v6.0.0": True,
1836                        "v6.0.5": True,
1837                        "v6.2.0": True,
1838                        "v6.2.3": True,
1839                        "v6.2.5": True,
1840                        "v6.2.7": True,
1841                        "v6.0.11": True
1842                    }
1843                }
1844            ],
1845            "revisions": {
1846                "v6.0.0": True,
1847                "v6.0.5": True,
1848                "v6.2.0": True,
1849                "v6.2.3": True,
1850                "v6.2.5": True,
1851                "v6.2.7": True,
1852                "v6.0.11": True
1853            }
1854        },
1855        "dupe": {
1856            "type": "list",
1857            "children": {
1858                "status1": {
1859                    "type": "string",
1860                    "options": [
1861                        {
1862                            "value": "enable",
1863                            "revisions": {
1864                                "v6.0.0": True,
1865                                "v6.0.5": True,
1866                                "v6.2.0": True,
1867                                "v6.2.3": True,
1868                                "v6.2.5": True,
1869                                "v6.2.7": True,
1870                                "v6.0.11": True
1871                            }
1872                        },
1873                        {
1874                            "value": "disable",
1875                            "revisions": {
1876                                "v6.0.0": True,
1877                                "v6.0.5": True,
1878                                "v6.2.0": True,
1879                                "v6.2.3": True,
1880                                "v6.2.5": True,
1881                                "v6.2.7": True,
1882                                "v6.0.11": True
1883                            }
1884                        }
1885                    ],
1886                    "revisions": {
1887                        "v6.0.0": True,
1888                        "v6.0.5": True,
1889                        "v6.2.0": True,
1890                        "v6.2.3": True,
1891                        "v6.2.5": True,
1892                        "v6.2.7": True,
1893                        "v6.0.11": True
1894                    }
1895                },
1896                "limit3": {
1897                    "type": "integer",
1898                    "revisions": {
1899                        "v6.0.0": True,
1900                        "v6.0.5": True,
1901                        "v6.2.0": True,
1902                        "v6.2.3": True,
1903                        "v6.2.5": True,
1904                        "v6.2.7": True,
1905                        "v6.0.11": True
1906                    }
1907                },
1908                "status3": {
1909                    "type": "string",
1910                    "options": [
1911                        {
1912                            "value": "enable",
1913                            "revisions": {
1914                                "v6.0.0": True,
1915                                "v6.0.5": True,
1916                                "v6.2.0": True,
1917                                "v6.2.3": True,
1918                                "v6.2.5": True,
1919                                "v6.2.7": True,
1920                                "v6.0.11": True
1921                            }
1922                        },
1923                        {
1924                            "value": "disable",
1925                            "revisions": {
1926                                "v6.0.0": True,
1927                                "v6.0.5": True,
1928                                "v6.2.0": True,
1929                                "v6.2.3": True,
1930                                "v6.2.5": True,
1931                                "v6.2.7": True,
1932                                "v6.0.11": True
1933                            }
1934                        }
1935                    ],
1936                    "revisions": {
1937                        "v6.0.0": True,
1938                        "v6.0.5": True,
1939                        "v6.2.0": True,
1940                        "v6.2.3": True,
1941                        "v6.2.5": True,
1942                        "v6.2.7": True,
1943                        "v6.0.11": True
1944                    }
1945                },
1946                "status2": {
1947                    "type": "string",
1948                    "options": [
1949                        {
1950                            "value": "enable",
1951                            "revisions": {
1952                                "v6.0.0": True,
1953                                "v6.0.5": True,
1954                                "v6.2.0": True,
1955                                "v6.2.3": True,
1956                                "v6.2.5": True,
1957                                "v6.2.7": True,
1958                                "v6.0.11": True
1959                            }
1960                        },
1961                        {
1962                            "value": "disable",
1963                            "revisions": {
1964                                "v6.0.0": True,
1965                                "v6.0.5": True,
1966                                "v6.2.0": True,
1967                                "v6.2.3": True,
1968                                "v6.2.5": True,
1969                                "v6.2.7": True,
1970                                "v6.0.11": True
1971                            }
1972                        }
1973                    ],
1974                    "revisions": {
1975                        "v6.0.0": True,
1976                        "v6.0.5": True,
1977                        "v6.2.0": True,
1978                        "v6.2.3": True,
1979                        "v6.2.5": True,
1980                        "v6.2.7": True,
1981                        "v6.0.11": True
1982                    }
1983                },
1984                "window3": {
1985                    "type": "integer",
1986                    "revisions": {
1987                        "v6.0.0": True,
1988                        "v6.0.5": True,
1989                        "v6.2.0": True,
1990                        "v6.2.3": True,
1991                        "v6.2.5": True,
1992                        "v6.2.7": True,
1993                        "v6.0.11": True
1994                    }
1995                },
1996                "window2": {
1997                    "type": "integer",
1998                    "revisions": {
1999                        "v6.0.0": True,
2000                        "v6.0.5": True,
2001                        "v6.2.0": True,
2002                        "v6.2.3": True,
2003                        "v6.2.5": True,
2004                        "v6.2.7": True,
2005                        "v6.0.11": True
2006                    }
2007                },
2008                "window1": {
2009                    "type": "integer",
2010                    "revisions": {
2011                        "v6.0.0": True,
2012                        "v6.0.5": True,
2013                        "v6.2.0": True,
2014                        "v6.2.3": True,
2015                        "v6.2.5": True,
2016                        "v6.2.7": True,
2017                        "v6.0.11": True
2018                    }
2019                },
2020                "limit2": {
2021                    "type": "integer",
2022                    "revisions": {
2023                        "v6.0.0": True,
2024                        "v6.0.5": True,
2025                        "v6.2.0": True,
2026                        "v6.2.3": True,
2027                        "v6.2.5": True,
2028                        "v6.2.7": True,
2029                        "v6.0.11": True
2030                    }
2031                },
2032                "action1": {
2033                    "multiple_values": True,
2034                    "type": "list",
2035                    "options": [
2036                        {
2037                            "value": "block",
2038                            "revisions": {
2039                                "v6.0.0": True,
2040                                "v6.0.5": True,
2041                                "v6.2.0": True,
2042                                "v6.2.3": True,
2043                                "v6.2.5": True,
2044                                "v6.2.7": True,
2045                                "v6.0.11": True
2046                            }
2047                        },
2048                        {
2049                            "value": "archive",
2050                            "revisions": {
2051                                "v6.0.0": True,
2052                                "v6.0.5": True,
2053                                "v6.2.0": True,
2054                                "v6.2.3": True,
2055                                "v6.2.5": True,
2056                                "v6.2.7": True,
2057                                "v6.0.11": True
2058                            }
2059                        },
2060                        {
2061                            "value": "log",
2062                            "revisions": {
2063                                "v6.0.0": True,
2064                                "v6.0.5": True,
2065                                "v6.2.0": True,
2066                                "v6.2.3": True,
2067                                "v6.2.5": True,
2068                                "v6.2.7": True,
2069                                "v6.0.11": True
2070                            }
2071                        },
2072                        {
2073                            "value": "archive-first",
2074                            "revisions": {
2075                                "v6.0.0": True,
2076                                "v6.0.5": True,
2077                                "v6.2.0": True,
2078                                "v6.2.3": True,
2079                                "v6.2.5": True,
2080                                "v6.2.7": True,
2081                                "v6.0.11": True
2082                            }
2083                        },
2084                        {
2085                            "value": "alert-notif",
2086                            "revisions": {
2087                                "v6.0.0": True,
2088                                "v6.0.5": True,
2089                                "v6.2.0": True,
2090                                "v6.2.3": True,
2091                                "v6.2.5": True,
2092                                "v6.2.7": True,
2093                                "v6.0.11": True
2094                            }
2095                        }
2096                    ],
2097                    "revisions": {
2098                        "v6.0.0": True,
2099                        "v6.0.5": True,
2100                        "v6.2.0": True,
2101                        "v6.2.3": True,
2102                        "v6.2.5": True,
2103                        "v6.2.7": True,
2104                        "v6.0.11": True
2105                    }
2106                },
2107                "action3": {
2108                    "multiple_values": True,
2109                    "type": "list",
2110                    "options": [
2111                        {
2112                            "value": "block",
2113                            "revisions": {
2114                                "v6.0.0": True,
2115                                "v6.0.5": True,
2116                                "v6.2.0": True,
2117                                "v6.2.3": True,
2118                                "v6.2.5": True,
2119                                "v6.2.7": True,
2120                                "v6.0.11": True
2121                            }
2122                        },
2123                        {
2124                            "value": "archive",
2125                            "revisions": {
2126                                "v6.0.0": True,
2127                                "v6.0.5": True,
2128                                "v6.2.0": True,
2129                                "v6.2.3": True,
2130                                "v6.2.5": True,
2131                                "v6.2.7": True,
2132                                "v6.0.11": True
2133                            }
2134                        },
2135                        {
2136                            "value": "log",
2137                            "revisions": {
2138                                "v6.0.0": True,
2139                                "v6.0.5": True,
2140                                "v6.2.0": True,
2141                                "v6.2.3": True,
2142                                "v6.2.5": True,
2143                                "v6.2.7": True,
2144                                "v6.0.11": True
2145                            }
2146                        },
2147                        {
2148                            "value": "archive-first",
2149                            "revisions": {
2150                                "v6.0.0": True,
2151                                "v6.0.5": True,
2152                                "v6.2.0": True,
2153                                "v6.2.3": True,
2154                                "v6.2.5": True,
2155                                "v6.2.7": True,
2156                                "v6.0.11": True
2157                            }
2158                        },
2159                        {
2160                            "value": "alert-notif",
2161                            "revisions": {
2162                                "v6.0.0": True,
2163                                "v6.0.5": True,
2164                                "v6.2.0": True,
2165                                "v6.2.3": True,
2166                                "v6.2.5": True,
2167                                "v6.2.7": True,
2168                                "v6.0.11": True
2169                            }
2170                        }
2171                    ],
2172                    "revisions": {
2173                        "v6.0.0": True,
2174                        "v6.0.5": True,
2175                        "v6.2.0": True,
2176                        "v6.2.3": True,
2177                        "v6.2.5": True,
2178                        "v6.2.7": True,
2179                        "v6.0.11": True
2180                    }
2181                },
2182                "action2": {
2183                    "multiple_values": True,
2184                    "type": "list",
2185                    "options": [
2186                        {
2187                            "value": "block",
2188                            "revisions": {
2189                                "v6.0.0": True,
2190                                "v6.0.5": True,
2191                                "v6.2.0": True,
2192                                "v6.2.3": True,
2193                                "v6.2.5": True,
2194                                "v6.2.7": True,
2195                                "v6.0.11": True
2196                            }
2197                        },
2198                        {
2199                            "value": "archive",
2200                            "revisions": {
2201                                "v6.0.0": True,
2202                                "v6.0.5": True,
2203                                "v6.2.0": True,
2204                                "v6.2.3": True,
2205                                "v6.2.5": True,
2206                                "v6.2.7": True,
2207                                "v6.0.11": True
2208                            }
2209                        },
2210                        {
2211                            "value": "log",
2212                            "revisions": {
2213                                "v6.0.0": True,
2214                                "v6.0.5": True,
2215                                "v6.2.0": True,
2216                                "v6.2.3": True,
2217                                "v6.2.5": True,
2218                                "v6.2.7": True,
2219                                "v6.0.11": True
2220                            }
2221                        },
2222                        {
2223                            "value": "archive-first",
2224                            "revisions": {
2225                                "v6.0.0": True,
2226                                "v6.0.5": True,
2227                                "v6.2.0": True,
2228                                "v6.2.3": True,
2229                                "v6.2.5": True,
2230                                "v6.2.7": True,
2231                                "v6.0.11": True
2232                            }
2233                        },
2234                        {
2235                            "value": "alert-notif",
2236                            "revisions": {
2237                                "v6.0.0": True,
2238                                "v6.0.5": True,
2239                                "v6.2.0": True,
2240                                "v6.2.3": True,
2241                                "v6.2.5": True,
2242                                "v6.2.7": True,
2243                                "v6.0.11": True
2244                            }
2245                        }
2246                    ],
2247                    "revisions": {
2248                        "v6.0.0": True,
2249                        "v6.0.5": True,
2250                        "v6.2.0": True,
2251                        "v6.2.3": True,
2252                        "v6.2.5": True,
2253                        "v6.2.7": True,
2254                        "v6.0.11": True
2255                    }
2256                },
2257                "block_time1": {
2258                    "type": "integer",
2259                    "revisions": {
2260                        "v6.0.0": True,
2261                        "v6.0.5": True,
2262                        "v6.2.0": True,
2263                        "v6.2.3": True,
2264                        "v6.2.5": True,
2265                        "v6.2.7": True,
2266                        "v6.0.11": True
2267                    }
2268                },
2269                "block_time2": {
2270                    "type": "integer",
2271                    "revisions": {
2272                        "v6.0.0": True,
2273                        "v6.0.5": True,
2274                        "v6.2.0": True,
2275                        "v6.2.3": True,
2276                        "v6.2.5": True,
2277                        "v6.2.7": True,
2278                        "v6.0.11": True
2279                    }
2280                },
2281                "block_time3": {
2282                    "type": "integer",
2283                    "revisions": {
2284                        "v6.0.0": True,
2285                        "v6.0.5": True,
2286                        "v6.2.0": True,
2287                        "v6.2.3": True,
2288                        "v6.2.5": True,
2289                        "v6.2.7": True,
2290                        "v6.0.11": True
2291                    }
2292                },
2293                "protocol": {
2294                    "type": "string",
2295                    "revisions": {
2296                        "v6.0.0": True,
2297                        "v6.0.5": True,
2298                        "v6.2.0": True,
2299                        "v6.2.3": True,
2300                        "v6.2.5": True,
2301                        "v6.2.7": True,
2302                        "v6.0.11": True
2303                    }
2304                },
2305                "limit1": {
2306                    "type": "integer",
2307                    "revisions": {
2308                        "v6.0.0": True,
2309                        "v6.0.5": True,
2310                        "v6.2.0": True,
2311                        "v6.2.3": True,
2312                        "v6.2.5": True,
2313                        "v6.2.7": True,
2314                        "v6.0.11": True
2315                    }
2316                }
2317            },
2318            "revisions": {
2319                "v6.0.0": True,
2320                "v6.0.5": True,
2321                "v6.2.0": True,
2322                "v6.2.3": True,
2323                "v6.2.5": True,
2324                "v6.2.7": True,
2325                "v6.0.11": True
2326            }
2327        },
2328        "mm4oversizelimit": {
2329            "type": "integer",
2330            "revisions": {
2331                "v6.0.0": True,
2332                "v6.0.5": True,
2333                "v6.2.0": True,
2334                "v6.2.3": True,
2335                "v6.2.5": True,
2336                "v6.2.7": True,
2337                "v6.0.11": True
2338            }
2339        },
2340        "replacemsg_group": {
2341            "type": "string",
2342            "revisions": {
2343                "v6.0.0": True,
2344                "v6.0.5": True,
2345                "v6.2.0": True,
2346                "v6.2.3": True,
2347                "v6.2.5": True,
2348                "v6.2.7": True,
2349                "v6.0.11": True
2350            }
2351        },
2352        "mms_checksum_log": {
2353            "type": "string",
2354            "options": [
2355                {
2356                    "value": "enable",
2357                    "revisions": {
2358                        "v6.0.0": True,
2359                        "v6.0.5": True,
2360                        "v6.2.0": True,
2361                        "v6.2.3": True,
2362                        "v6.2.5": True,
2363                        "v6.2.7": True,
2364                        "v6.0.11": True
2365                    }
2366                },
2367                {
2368                    "value": "disable",
2369                    "revisions": {
2370                        "v6.0.0": True,
2371                        "v6.0.5": True,
2372                        "v6.2.0": True,
2373                        "v6.2.3": True,
2374                        "v6.2.5": True,
2375                        "v6.2.7": True,
2376                        "v6.0.11": True
2377                    }
2378                }
2379            ],
2380            "revisions": {
2381                "v6.0.0": True,
2382                "v6.0.5": True,
2383                "v6.2.0": True,
2384                "v6.2.3": True,
2385                "v6.2.5": True,
2386                "v6.2.7": True,
2387                "v6.0.11": True
2388            }
2389        },
2390        "mm7_outbreak_prevention": {
2391            "type": "string",
2392            "options": [
2393                {
2394                    "value": "disabled",
2395                    "revisions": {
2396                        "v6.0.0": True,
2397                        "v6.0.5": True,
2398                        "v6.2.0": True,
2399                        "v6.2.3": True,
2400                        "v6.2.5": True,
2401                        "v6.2.7": True,
2402                        "v6.0.11": True
2403                    }
2404                },
2405                {
2406                    "value": "files",
2407                    "revisions": {
2408                        "v6.0.0": True,
2409                        "v6.0.5": True,
2410                        "v6.2.0": True,
2411                        "v6.2.3": True,
2412                        "v6.2.5": True,
2413                        "v6.2.7": True,
2414                        "v6.0.11": True
2415                    }
2416                },
2417                {
2418                    "value": "full-archive",
2419                    "revisions": {
2420                        "v6.0.0": True,
2421                        "v6.0.5": True,
2422                        "v6.2.0": True,
2423                        "v6.2.3": True,
2424                        "v6.2.5": True,
2425                        "v6.2.7": True,
2426                        "v6.0.11": True
2427                    }
2428                }
2429            ],
2430            "revisions": {
2431                "v6.0.0": True,
2432                "v6.0.5": True,
2433                "v6.2.0": True,
2434                "v6.2.3": True,
2435                "v6.2.5": True,
2436                "v6.2.7": True,
2437                "v6.0.11": True
2438            }
2439        },
2440        "bwordtable": {
2441            "type": "integer",
2442            "revisions": {
2443                "v6.0.0": True,
2444                "v6.0.5": True,
2445                "v6.2.0": True,
2446                "v6.2.3": True,
2447                "v6.2.5": True,
2448                "v6.2.7": True,
2449                "v6.0.11": True
2450            }
2451        },
2452        "notification": {
2453            "type": "list",
2454            "children": {
2455                "from_in_header": {
2456                    "type": "string",
2457                    "options": [
2458                        {
2459                            "value": "enable",
2460                            "revisions": {
2461                                "v6.0.0": True,
2462                                "v6.0.5": True,
2463                                "v6.2.0": True,
2464                                "v6.2.3": True,
2465                                "v6.2.5": True,
2466                                "v6.2.7": True,
2467                                "v6.0.11": True
2468                            }
2469                        },
2470                        {
2471                            "value": "disable",
2472                            "revisions": {
2473                                "v6.0.0": True,
2474                                "v6.0.5": True,
2475                                "v6.2.0": True,
2476                                "v6.2.3": True,
2477                                "v6.2.5": True,
2478                                "v6.2.7": True,
2479                                "v6.0.11": True
2480                            }
2481                        }
2482                    ],
2483                    "revisions": {
2484                        "v6.0.0": True,
2485                        "v6.0.5": True,
2486                        "v6.2.0": True,
2487                        "v6.2.3": True,
2488                        "v6.2.5": True,
2489                        "v6.2.7": True,
2490                        "v6.0.11": True
2491                    }
2492                },
2493                "bword_int": {
2494                    "type": "integer",
2495                    "revisions": {
2496                        "v6.0.0": True,
2497                        "v6.0.5": True,
2498                        "v6.2.0": True,
2499                        "v6.2.3": True,
2500                        "v6.2.5": True,
2501                        "v6.2.7": True,
2502                        "v6.0.11": True
2503                    }
2504                },
2505                "protocol": {
2506                    "type": "string",
2507                    "revisions": {
2508                        "v6.0.0": True,
2509                        "v6.0.5": True,
2510                        "v6.2.0": True,
2511                        "v6.2.3": True,
2512                        "v6.2.5": True,
2513                        "v6.2.7": True,
2514                        "v6.0.11": True
2515                    }
2516                },
2517                "msg_type": {
2518                    "type": "string",
2519                    "options": [
2520                        {
2521                            "value": "submit-req",
2522                            "revisions": {
2523                                "v6.0.0": True,
2524                                "v6.0.5": True,
2525                                "v6.2.0": True,
2526                                "v6.2.3": True,
2527                                "v6.2.5": True,
2528                                "v6.2.7": True,
2529                                "v6.0.11": True
2530                            }
2531                        },
2532                        {
2533                            "value": "deliver-req",
2534                            "revisions": {
2535                                "v6.0.0": True,
2536                                "v6.0.5": True,
2537                                "v6.2.0": True,
2538                                "v6.2.3": True,
2539                                "v6.2.5": True,
2540                                "v6.2.7": True,
2541                                "v6.0.11": True
2542                            }
2543                        }
2544                    ],
2545                    "revisions": {
2546                        "v6.0.0": True,
2547                        "v6.0.5": True,
2548                        "v6.2.0": True,
2549                        "v6.2.3": True,
2550                        "v6.2.5": True,
2551                        "v6.2.7": True,
2552                        "v6.0.11": True
2553                    }
2554                },
2555                "carrier_endpoint_bwl_int_mode": {
2556                    "type": "string",
2557                    "options": [
2558                        {
2559                            "value": "hours",
2560                            "revisions": {
2561                                "v6.0.0": True,
2562                                "v6.0.5": True,
2563                                "v6.2.0": True,
2564                                "v6.2.3": True,
2565                                "v6.2.5": True,
2566                                "v6.2.7": True,
2567                                "v6.0.11": True
2568                            }
2569                        },
2570                        {
2571                            "value": "minutes",
2572                            "revisions": {
2573                                "v6.0.0": True,
2574                                "v6.0.5": True,
2575                                "v6.2.0": True,
2576                                "v6.2.3": True,
2577                                "v6.2.5": True,
2578                                "v6.2.7": True,
2579                                "v6.0.11": True
2580                            }
2581                        }
2582                    ],
2583                    "revisions": {
2584                        "v6.0.0": True,
2585                        "v6.0.5": True,
2586                        "v6.2.0": True,
2587                        "v6.2.3": True,
2588                        "v6.2.5": True,
2589                        "v6.2.7": True,
2590                        "v6.0.11": True
2591                    }
2592                },
2593                "vas_id": {
2594                    "type": "string",
2595                    "revisions": {
2596                        "v6.0.0": True,
2597                        "v6.0.5": True,
2598                        "v6.2.0": True,
2599                        "v6.2.3": True,
2600                        "v6.2.5": True,
2601                        "v6.2.7": True,
2602                        "v6.0.11": True
2603                    }
2604                },
2605                "file_block_status": {
2606                    "type": "string",
2607                    "options": [
2608                        {
2609                            "value": "enable",
2610                            "revisions": {
2611                                "v6.0.0": True,
2612                                "v6.0.5": True,
2613                                "v6.2.0": True,
2614                                "v6.2.3": True,
2615                                "v6.2.5": True,
2616                                "v6.2.7": True,
2617                                "v6.0.11": True
2618                            }
2619                        },
2620                        {
2621                            "value": "disable",
2622                            "revisions": {
2623                                "v6.0.0": True,
2624                                "v6.0.5": True,
2625                                "v6.2.0": True,
2626                                "v6.2.3": True,
2627                                "v6.2.5": True,
2628                                "v6.2.7": True,
2629                                "v6.0.11": True
2630                            }
2631                        }
2632                    ],
2633                    "revisions": {
2634                        "v6.0.0": True,
2635                        "v6.0.5": True,
2636                        "v6.2.0": True,
2637                        "v6.2.3": True,
2638                        "v6.2.5": True,
2639                        "v6.2.7": True,
2640                        "v6.0.11": True
2641                    }
2642                },
2643                "msg_protocol": {
2644                    "type": "string",
2645                    "options": [
2646                        {
2647                            "value": "mm1",
2648                            "revisions": {
2649                                "v6.0.0": True,
2650                                "v6.0.5": True,
2651                                "v6.2.0": True,
2652                                "v6.2.3": True,
2653                                "v6.2.5": True,
2654                                "v6.2.7": True,
2655                                "v6.0.11": True
2656                            }
2657                        },
2658                        {
2659                            "value": "mm3",
2660                            "revisions": {
2661                                "v6.0.0": True,
2662                                "v6.0.5": True,
2663                                "v6.2.0": True,
2664                                "v6.2.3": True,
2665                                "v6.2.5": True,
2666                                "v6.2.7": True,
2667                                "v6.0.11": True
2668                            }
2669                        },
2670                        {
2671                            "value": "mm4",
2672                            "revisions": {
2673                                "v6.0.0": True,
2674                                "v6.0.5": True,
2675                                "v6.2.0": True,
2676                                "v6.2.3": True,
2677                                "v6.2.5": True,
2678                                "v6.2.7": True,
2679                                "v6.0.11": True
2680                            }
2681                        },
2682                        {
2683                            "value": "mm7",
2684                            "revisions": {
2685                                "v6.0.0": True,
2686                                "v6.0.5": True,
2687                                "v6.2.0": True,
2688                                "v6.2.3": True,
2689                                "v6.2.5": True,
2690                                "v6.2.7": True,
2691                                "v6.0.11": True
2692                            }
2693                        }
2694                    ],
2695                    "revisions": {
2696                        "v6.0.0": True,
2697                        "v6.0.5": True,
2698                        "v6.2.0": True,
2699                        "v6.2.3": True,
2700                        "v6.2.5": True,
2701                        "v6.2.7": True,
2702                        "v6.0.11": True
2703                    }
2704                },
2705                "carrier_endpoint_bwl_status": {
2706                    "type": "string",
2707                    "options": [
2708                        {
2709                            "value": "enable",
2710                            "revisions": {
2711                                "v6.0.0": True,
2712                                "v6.0.5": True,
2713                                "v6.2.0": True,
2714                                "v6.2.3": True,
2715                                "v6.2.5": True,
2716                                "v6.2.7": True,
2717                                "v6.0.11": True
2718                            }
2719                        },
2720                        {
2721                            "value": "disable",
2722                            "revisions": {
2723                                "v6.0.0": True,
2724                                "v6.0.5": True,
2725                                "v6.2.0": True,
2726                                "v6.2.3": True,
2727                                "v6.2.5": True,
2728                                "v6.2.7": True,
2729                                "v6.0.11": True
2730                            }
2731                        }
2732                    ],
2733                    "revisions": {
2734                        "v6.0.0": True,
2735                        "v6.0.5": True,
2736                        "v6.2.0": True,
2737                        "v6.2.3": True,
2738                        "v6.2.5": True,
2739                        "v6.2.7": True,
2740                        "v6.0.11": True
2741                    }
2742                },
2743                "flood_int_mode": {
2744                    "type": "string",
2745                    "options": [
2746                        {
2747                            "value": "hours",
2748                            "revisions": {
2749                                "v6.0.0": True,
2750                                "v6.0.5": True,
2751                                "v6.2.0": True,
2752                                "v6.2.3": True,
2753                                "v6.2.5": True,
2754                                "v6.2.7": True,
2755                                "v6.0.11": True
2756                            }
2757                        },
2758                        {
2759                            "value": "minutes",
2760                            "revisions": {
2761                                "v6.0.0": True,
2762                                "v6.0.5": True,
2763                                "v6.2.0": True,
2764                                "v6.2.3": True,
2765                                "v6.2.5": True,
2766                                "v6.2.7": True,
2767                                "v6.0.11": True
2768                            }
2769                        }
2770                    ],
2771                    "revisions": {
2772                        "v6.0.0": True,
2773                        "v6.0.5": True,
2774                        "v6.2.0": True,
2775                        "v6.2.3": True,
2776                        "v6.2.5": True,
2777                        "v6.2.7": True,
2778                        "v6.0.11": True
2779                    }
2780                },
2781                "flood_int": {
2782                    "type": "integer",
2783                    "revisions": {
2784                        "v6.0.0": True,
2785                        "v6.0.5": True,
2786                        "v6.2.0": True,
2787                        "v6.2.3": True,
2788                        "v6.2.5": True,
2789                        "v6.2.7": True,
2790                        "v6.0.11": True
2791                    }
2792                },
2793                "alert_status": {
2794                    "type": "string",
2795                    "options": [
2796                        {
2797                            "value": "enable",
2798                            "revisions": {
2799                                "v6.0.0": True,
2800                                "v6.0.5": True,
2801                                "v6.2.0": True,
2802                                "v6.2.3": True,
2803                                "v6.2.5": True,
2804                                "v6.2.7": True,
2805                                "v6.0.11": True
2806                            }
2807                        },
2808                        {
2809                            "value": "disable",
2810                            "revisions": {
2811                                "v6.0.0": True,
2812                                "v6.0.5": True,
2813                                "v6.2.0": True,
2814                                "v6.2.3": True,
2815                                "v6.2.5": True,
2816                                "v6.2.7": True,
2817                                "v6.0.11": True
2818                            }
2819                        }
2820                    ],
2821                    "revisions": {
2822                        "v6.0.0": True,
2823                        "v6.0.5": True,
2824                        "v6.2.0": True,
2825                        "v6.2.3": True,
2826                        "v6.2.5": True,
2827                        "v6.2.7": True,
2828                        "v6.0.11": True
2829                    }
2830                },
2831                "tod_window_end": {
2832                    "type": "string",
2833                    "revisions": {
2834                        "v6.0.0": True,
2835                        "v6.0.5": True,
2836                        "v6.2.0": True,
2837                        "v6.2.3": True,
2838                        "v6.2.5": True,
2839                        "v6.2.7": True,
2840                        "v6.0.11": True
2841                    }
2842                },
2843                "flood_status": {
2844                    "type": "string",
2845                    "options": [
2846                        {
2847                            "value": "enable",
2848                            "revisions": {
2849                                "v6.0.0": True,
2850                                "v6.0.5": True,
2851                                "v6.2.0": True,
2852                                "v6.2.3": True,
2853                                "v6.2.5": True,
2854                                "v6.2.7": True,
2855                                "v6.0.11": True
2856                            }
2857                        },
2858                        {
2859                            "value": "disable",
2860                            "revisions": {
2861                                "v6.0.0": True,
2862                                "v6.0.5": True,
2863                                "v6.2.0": True,
2864                                "v6.2.3": True,
2865                                "v6.2.5": True,
2866                                "v6.2.7": True,
2867                                "v6.0.11": True
2868                            }
2869                        }
2870                    ],
2871                    "revisions": {
2872                        "v6.0.0": True,
2873                        "v6.0.5": True,
2874                        "v6.2.0": True,
2875                        "v6.2.3": True,
2876                        "v6.2.5": True,
2877                        "v6.2.7": True,
2878                        "v6.0.11": True
2879                    }
2880                },
2881                "file_block_int": {
2882                    "type": "integer",
2883                    "revisions": {
2884                        "v6.0.0": True,
2885                        "v6.0.5": True,
2886                        "v6.2.0": True,
2887                        "v6.2.3": True,
2888                        "v6.2.5": True,
2889                        "v6.2.7": True,
2890                        "v6.0.11": True
2891                    }
2892                },
2893                "mmsc_username": {
2894                    "type": "string",
2895                    "revisions": {
2896                        "v6.0.0": True,
2897                        "v6.0.5": True,
2898                        "v6.2.0": True,
2899                        "v6.2.3": True,
2900                        "v6.2.5": True,
2901                        "v6.2.7": True,
2902                        "v6.0.11": True
2903                    }
2904                },
2905                "virus_int": {
2906                    "type": "integer",
2907                    "revisions": {
2908                        "v6.0.0": True,
2909                        "v6.0.5": True,
2910                        "v6.2.0": True,
2911                        "v6.2.3": True,
2912                        "v6.2.5": True,
2913                        "v6.2.7": True,
2914                        "v6.0.11": True
2915                    }
2916                },
2917                "mms_checksum_int_mode": {
2918                    "type": "string",
2919                    "options": [
2920                        {
2921                            "value": "hours",
2922                            "revisions": {
2923                                "v6.0.0": True,
2924                                "v6.0.5": True,
2925                                "v6.2.0": True,
2926                                "v6.2.3": True,
2927                                "v6.2.5": True,
2928                                "v6.2.7": True,
2929                                "v6.0.11": True
2930                            }
2931                        },
2932                        {
2933                            "value": "minutes",
2934                            "revisions": {
2935                                "v6.0.0": True,
2936                                "v6.0.5": True,
2937                                "v6.2.0": True,
2938                                "v6.2.3": True,
2939                                "v6.2.5": True,
2940                                "v6.2.7": True,
2941                                "v6.0.11": True
2942                            }
2943                        }
2944                    ],
2945                    "revisions": {
2946                        "v6.0.0": True,
2947                        "v6.0.5": True,
2948                        "v6.2.0": True,
2949                        "v6.2.3": True,
2950                        "v6.2.5": True,
2951                        "v6.2.7": True,
2952                        "v6.0.11": True
2953                    }
2954                },
2955                "mmsc_hostname": {
2956                    "type": "string",
2957                    "revisions": {
2958                        "v6.0.0": True,
2959                        "v6.0.5": True,
2960                        "v6.2.0": True,
2961                        "v6.2.3": True,
2962                        "v6.2.5": True,
2963                        "v6.2.7": True,
2964                        "v6.0.11": True
2965                    }
2966                },
2967                "dupe_int": {
2968                    "type": "integer",
2969                    "revisions": {
2970                        "v6.0.0": True,
2971                        "v6.0.5": True,
2972                        "v6.2.0": True,
2973                        "v6.2.3": True,
2974                        "v6.2.5": True,
2975                        "v6.2.7": True,
2976                        "v6.0.11": True
2977                    }
2978                },
2979                "mmsc_port": {
2980                    "type": "integer",
2981                    "revisions": {
2982                        "v6.0.0": True,
2983                        "v6.0.5": True,
2984                        "v6.2.0": True,
2985                        "v6.2.3": True,
2986                        "v6.2.5": True,
2987                        "v6.2.7": True,
2988                        "v6.0.11": True
2989                    }
2990                },
2991                "bword_int_mode": {
2992                    "type": "string",
2993                    "options": [
2994                        {
2995                            "value": "hours",
2996                            "revisions": {
2997                                "v6.0.0": True,
2998                                "v6.0.5": True,
2999                                "v6.2.0": True,
3000                                "v6.2.3": True,
3001                                "v6.2.5": True,
3002                                "v6.2.7": True,
3003                                "v6.0.11": True
3004                            }
3005                        },
3006                        {
3007                            "value": "minutes",
3008                            "revisions": {
3009                                "v6.0.0": True,
3010                                "v6.0.5": True,
3011                                "v6.2.0": True,
3012                                "v6.2.3": True,
3013                                "v6.2.5": True,
3014                                "v6.2.7": True,
3015                                "v6.0.11": True
3016                            }
3017                        }
3018                    ],
3019                    "revisions": {
3020                        "v6.0.0": True,
3021                        "v6.0.5": True,
3022                        "v6.2.0": True,
3023                        "v6.2.3": True,
3024                        "v6.2.5": True,
3025                        "v6.2.7": True,
3026                        "v6.0.11": True
3027                    }
3028                },
3029                "alert_int_mode": {
3030                    "type": "string",
3031                    "options": [
3032                        {
3033                            "value": "hours",
3034                            "revisions": {
3035                                "v6.0.0": True,
3036                                "v6.0.5": True,
3037                                "v6.2.0": True,
3038                                "v6.2.3": True,
3039                                "v6.2.5": True,
3040                                "v6.2.7": True,
3041                                "v6.0.11": True
3042                            }
3043                        },
3044                        {
3045                            "value": "minutes",
3046                            "revisions": {
3047                                "v6.0.0": True,
3048                                "v6.0.5": True,
3049                                "v6.2.0": True,
3050                                "v6.2.3": True,
3051                                "v6.2.5": True,
3052                                "v6.2.7": True,
3053                                "v6.0.11": True
3054                            }
3055                        }
3056                    ],
3057                    "revisions": {
3058                        "v6.0.0": True,
3059                        "v6.0.5": True,
3060                        "v6.2.0": True,
3061                        "v6.2.3": True,
3062                        "v6.2.5": True,
3063                        "v6.2.7": True,
3064                        "v6.0.11": True
3065                    }
3066                },
3067                "dupe_status": {
3068                    "type": "string",
3069                    "options": [
3070                        {
3071                            "value": "enable",
3072                            "revisions": {
3073                                "v6.0.0": True,
3074                                "v6.0.5": True,
3075                                "v6.2.0": True,
3076                                "v6.2.3": True,
3077                                "v6.2.5": True,
3078                                "v6.2.7": True,
3079                                "v6.0.11": True
3080                            }
3081                        },
3082                        {
3083                            "value": "disable",
3084                            "revisions": {
3085                                "v6.0.0": True,
3086                                "v6.0.5": True,
3087                                "v6.2.0": True,
3088                                "v6.2.3": True,
3089                                "v6.2.5": True,
3090                                "v6.2.7": True,
3091                                "v6.0.11": True
3092                            }
3093                        }
3094                    ],
3095                    "revisions": {
3096                        "v6.0.0": True,
3097                        "v6.0.5": True,
3098                        "v6.2.0": True,
3099                        "v6.2.3": True,
3100                        "v6.2.5": True,
3101                        "v6.2.7": True,
3102                        "v6.0.11": True
3103                    }
3104                },
3105                "mms_checksum_status": {
3106                    "type": "string",
3107                    "options": [
3108                        {
3109                            "value": "enable",
3110                            "revisions": {
3111                                "v6.0.0": True,
3112                                "v6.0.5": True,
3113                                "v6.2.0": True,
3114                                "v6.2.3": True,
3115                                "v6.2.5": True,
3116                                "v6.2.7": True,
3117                                "v6.0.11": True
3118                            }
3119                        },
3120                        {
3121                            "value": "disable",
3122                            "revisions": {
3123                                "v6.0.0": True,
3124                                "v6.0.5": True,
3125                                "v6.2.0": True,
3126                                "v6.2.3": True,
3127                                "v6.2.5": True,
3128                                "v6.2.7": True,
3129                                "v6.0.11": True
3130                            }
3131                        }
3132                    ],
3133                    "revisions": {
3134                        "v6.0.0": True,
3135                        "v6.0.5": True,
3136                        "v6.2.0": True,
3137                        "v6.2.3": True,
3138                        "v6.2.5": True,
3139                        "v6.2.7": True,
3140                        "v6.0.11": True
3141                    }
3142                },
3143                "virus_status": {
3144                    "type": "string",
3145                    "options": [
3146                        {
3147                            "value": "enable",
3148                            "revisions": {
3149                                "v6.0.0": True,
3150                                "v6.0.5": True,
3151                                "v6.2.0": True,
3152                                "v6.2.3": True,
3153                                "v6.2.5": True,
3154                                "v6.2.7": True,
3155                                "v6.0.11": True
3156                            }
3157                        },
3158                        {
3159                            "value": "disable",
3160                            "revisions": {
3161                                "v6.0.0": True,
3162                                "v6.0.5": True,
3163                                "v6.2.0": True,
3164                                "v6.2.3": True,
3165                                "v6.2.5": True,
3166                                "v6.2.7": True,
3167                                "v6.0.11": True
3168                            }
3169                        }
3170                    ],
3171                    "revisions": {
3172                        "v6.0.0": True,
3173                        "v6.0.5": True,
3174                        "v6.2.0": True,
3175                        "v6.2.3": True,
3176                        "v6.2.5": True,
3177                        "v6.2.7": True,
3178                        "v6.0.11": True
3179                    }
3180                },
3181                "alert_int": {
3182                    "type": "integer",
3183                    "revisions": {
3184                        "v6.0.0": True,
3185                        "v6.0.5": True,
3186                        "v6.2.0": True,
3187                        "v6.2.3": True,
3188                        "v6.2.5": True,
3189                        "v6.2.7": True,
3190                        "v6.0.11": True
3191                    }
3192                },
3193                "alert_src_msisdn": {
3194                    "type": "string",
3195                    "revisions": {
3196                        "v6.0.0": True,
3197                        "v6.0.5": True,
3198                        "v6.2.0": True,
3199                        "v6.2.3": True,
3200                        "v6.2.5": True,
3201                        "v6.2.7": True,
3202                        "v6.0.11": True
3203                    }
3204                },
3205                "days_allowed": {
3206                    "multiple_values": True,
3207                    "type": "list",
3208                    "options": [
3209                        {
3210                            "value": "sunday",
3211                            "revisions": {
3212                                "v6.0.0": True,
3213                                "v6.0.5": True,
3214                                "v6.2.0": True,
3215                                "v6.2.3": True,
3216                                "v6.2.5": True,
3217                                "v6.2.7": True,
3218                                "v6.0.11": True
3219                            }
3220                        },
3221                        {
3222                            "value": "monday",
3223                            "revisions": {
3224                                "v6.0.0": True,
3225                                "v6.0.5": True,
3226                                "v6.2.0": True,
3227                                "v6.2.3": True,
3228                                "v6.2.5": True,
3229                                "v6.2.7": True,
3230                                "v6.0.11": True
3231                            }
3232                        },
3233                        {
3234                            "value": "tuesday",
3235                            "revisions": {
3236                                "v6.0.0": True,
3237                                "v6.0.5": True,
3238                                "v6.2.0": True,
3239                                "v6.2.3": True,
3240                                "v6.2.5": True,
3241                                "v6.2.7": True,
3242                                "v6.0.11": True
3243                            }
3244                        },
3245                        {
3246                            "value": "wednesday",
3247                            "revisions": {
3248                                "v6.0.0": True,
3249                                "v6.0.5": True,
3250                                "v6.2.0": True,
3251                                "v6.2.3": True,
3252                                "v6.2.5": True,
3253                                "v6.2.7": True,
3254                                "v6.0.11": True
3255                            }
3256                        },
3257                        {
3258                            "value": "thursday",
3259                            "revisions": {
3260                                "v6.0.0": True,
3261                                "v6.0.5": True,
3262                                "v6.2.0": True,
3263                                "v6.2.3": True,
3264                                "v6.2.5": True,
3265                                "v6.2.7": True,
3266                                "v6.0.11": True
3267                            }
3268                        },
3269                        {
3270                            "value": "friday",
3271                            "revisions": {
3272                                "v6.0.0": True,
3273                                "v6.0.5": True,
3274                                "v6.2.0": True,
3275                                "v6.2.3": True,
3276                                "v6.2.5": True,
3277                                "v6.2.7": True,
3278                                "v6.0.11": True
3279                            }
3280                        },
3281                        {
3282                            "value": "saturday",
3283                            "revisions": {
3284                                "v6.0.0": True,
3285                                "v6.0.5": True,
3286                                "v6.2.0": True,
3287                                "v6.2.3": True,
3288                                "v6.2.5": True,
3289                                "v6.2.7": True,
3290                                "v6.0.11": True
3291                            }
3292                        }
3293                    ],
3294                    "revisions": {
3295                        "v6.0.0": True,
3296                        "v6.0.5": True,
3297                        "v6.2.0": True,
3298                        "v6.2.3": True,
3299                        "v6.2.5": True,
3300                        "v6.2.7": True,
3301                        "v6.0.11": True
3302                    }
3303                },
3304                "vasp_id": {
3305                    "type": "string",
3306                    "revisions": {
3307                        "v6.0.0": True,
3308                        "v6.0.5": True,
3309                        "v6.2.0": True,
3310                        "v6.2.3": True,
3311                        "v6.2.5": True,
3312                        "v6.2.7": True,
3313                        "v6.0.11": True
3314                    }
3315                },
3316                "detect_server": {
3317                    "type": "string",
3318                    "options": [
3319                        {
3320                            "value": "enable",
3321                            "revisions": {
3322                                "v6.0.0": True,
3323                                "v6.0.5": True,
3324                                "v6.2.0": True,
3325                                "v6.2.3": True,
3326                                "v6.2.5": True,
3327                                "v6.2.7": True,
3328                                "v6.0.11": True
3329                            }
3330                        },
3331                        {
3332                            "value": "disable",
3333                            "revisions": {
3334                                "v6.0.0": True,
3335                                "v6.0.5": True,
3336                                "v6.2.0": True,
3337                                "v6.2.3": True,
3338                                "v6.2.5": True,
3339                                "v6.2.7": True,
3340                                "v6.0.11": True
3341                            }
3342                        }
3343                    ],
3344                    "revisions": {
3345                        "v6.0.0": True,
3346                        "v6.0.5": True,
3347                        "v6.2.0": True,
3348                        "v6.2.3": True,
3349                        "v6.2.5": True,
3350                        "v6.2.7": True,
3351                        "v6.0.11": True
3352                    }
3353                },
3354                "tod_window_start": {
3355                    "type": "string",
3356                    "revisions": {
3357                        "v6.0.0": True,
3358                        "v6.0.5": True,
3359                        "v6.2.0": True,
3360                        "v6.2.3": True,
3361                        "v6.2.5": True,
3362                        "v6.2.7": True,
3363                        "v6.0.11": True
3364                    }
3365                },
3366                "mmsc_url": {
3367                    "type": "string",
3368                    "revisions": {
3369                        "v6.0.0": True,
3370                        "v6.0.5": True,
3371                        "v6.2.0": True,
3372                        "v6.2.3": True,
3373                        "v6.2.5": True,
3374                        "v6.2.7": True,
3375                        "v6.0.11": True
3376                    }
3377                },
3378                "mms_checksum_int": {
3379                    "type": "integer",
3380                    "revisions": {
3381                        "v6.0.0": True,
3382                        "v6.0.5": True,
3383                        "v6.2.0": True,
3384                        "v6.2.3": True,
3385                        "v6.2.5": True,
3386                        "v6.2.7": True,
3387                        "v6.0.11": True
3388                    }
3389                },
3390                "tod_window_duration": {
3391                    "type": "string",
3392                    "revisions": {
3393                        "v6.0.0": True,
3394                        "v6.0.5": True,
3395                        "v6.2.0": True,
3396                        "v6.2.3": True,
3397                        "v6.2.5": True,
3398                        "v6.2.7": True,
3399                        "v6.0.11": True
3400                    }
3401                },
3402                "rate_limit": {
3403                    "type": "integer",
3404                    "revisions": {
3405                        "v6.0.0": True,
3406                        "v6.0.5": True,
3407                        "v6.2.0": True,
3408                        "v6.2.3": True,
3409                        "v6.2.5": True,
3410                        "v6.2.7": True,
3411                        "v6.0.11": True
3412                    }
3413                },
3414                "virus_int_mode": {
3415                    "type": "string",
3416                    "options": [
3417                        {
3418                            "value": "hours",
3419                            "revisions": {
3420                                "v6.0.0": True,
3421                                "v6.0.5": True,
3422                                "v6.2.0": True,
3423                                "v6.2.3": True,
3424                                "v6.2.5": True,
3425                                "v6.2.7": True,
3426                                "v6.0.11": True
3427                            }
3428                        },
3429                        {
3430                            "value": "minutes",
3431                            "revisions": {
3432                                "v6.0.0": True,
3433                                "v6.0.5": True,
3434                                "v6.2.0": True,
3435                                "v6.2.3": True,
3436                                "v6.2.5": True,
3437                                "v6.2.7": True,
3438                                "v6.0.11": True
3439                            }
3440                        }
3441                    ],
3442                    "revisions": {
3443                        "v6.0.0": True,
3444                        "v6.0.5": True,
3445                        "v6.2.0": True,
3446                        "v6.2.3": True,
3447                        "v6.2.5": True,
3448                        "v6.2.7": True,
3449                        "v6.0.11": True
3450                    }
3451                },
3452                "mmsc_password": {
3453                    "type": "string",
3454                    "revisions": {
3455                        "v6.0.0": True,
3456                        "v6.0.5": True,
3457                        "v6.2.0": True,
3458                        "v6.2.3": True,
3459                        "v6.2.5": True,
3460                        "v6.2.7": True,
3461                        "v6.0.11": True
3462                    }
3463                },
3464                "file_block_int_mode": {
3465                    "type": "string",
3466                    "options": [
3467                        {
3468                            "value": "hours",
3469                            "revisions": {
3470                                "v6.0.0": True,
3471                                "v6.0.5": True,
3472                                "v6.2.0": True,
3473                                "v6.2.3": True,
3474                                "v6.2.5": True,
3475                                "v6.2.7": True,
3476                                "v6.0.11": True
3477                            }
3478                        },
3479                        {
3480                            "value": "minutes",
3481                            "revisions": {
3482                                "v6.0.0": True,
3483                                "v6.0.5": True,
3484                                "v6.2.0": True,
3485                                "v6.2.3": True,
3486                                "v6.2.5": True,
3487                                "v6.2.7": True,
3488                                "v6.0.11": True
3489                            }
3490                        }
3491                    ],
3492                    "revisions": {
3493                        "v6.0.0": True,
3494                        "v6.0.5": True,
3495                        "v6.2.0": True,
3496                        "v6.2.3": True,
3497                        "v6.2.5": True,
3498                        "v6.2.7": True,
3499                        "v6.0.11": True
3500                    }
3501                },
3502                "dupe_int_mode": {
3503                    "type": "string",
3504                    "options": [
3505                        {
3506                            "value": "hours",
3507                            "revisions": {
3508                                "v6.0.0": True,
3509                                "v6.0.5": True,
3510                                "v6.2.0": True,
3511                                "v6.2.3": True,
3512                                "v6.2.5": True,
3513                                "v6.2.7": True,
3514                                "v6.0.11": True
3515                            }
3516                        },
3517                        {
3518                            "value": "minutes",
3519                            "revisions": {
3520                                "v6.0.0": True,
3521                                "v6.0.5": True,
3522                                "v6.2.0": True,
3523                                "v6.2.3": True,
3524                                "v6.2.5": True,
3525                                "v6.2.7": True,
3526                                "v6.0.11": True
3527                            }
3528                        }
3529                    ],
3530                    "revisions": {
3531                        "v6.0.0": True,
3532                        "v6.0.5": True,
3533                        "v6.2.0": True,
3534                        "v6.2.3": True,
3535                        "v6.2.5": True,
3536                        "v6.2.7": True,
3537                        "v6.0.11": True
3538                    }
3539                },
3540                "bword_status": {
3541                    "type": "string",
3542                    "options": [
3543                        {
3544                            "value": "enable",
3545                            "revisions": {
3546                                "v6.0.0": True,
3547                                "v6.0.5": True,
3548                                "v6.2.0": True,
3549                                "v6.2.3": True,
3550                                "v6.2.5": True,
3551                                "v6.2.7": True,
3552                                "v6.0.11": True
3553                            }
3554                        },
3555                        {
3556                            "value": "disable",
3557                            "revisions": {
3558                                "v6.0.0": True,
3559                                "v6.0.5": True,
3560                                "v6.2.0": True,
3561                                "v6.2.3": True,
3562                                "v6.2.5": True,
3563                                "v6.2.7": True,
3564                                "v6.0.11": True
3565                            }
3566                        }
3567                    ],
3568                    "revisions": {
3569                        "v6.0.0": True,
3570                        "v6.0.5": True,
3571                        "v6.2.0": True,
3572                        "v6.2.3": True,
3573                        "v6.2.5": True,
3574                        "v6.2.7": True,
3575                        "v6.0.11": True
3576                    }
3577                },
3578                "carrier_endpoint_bwl_int": {
3579                    "type": "integer",
3580                    "revisions": {
3581                        "v6.0.0": True,
3582                        "v6.0.5": True,
3583                        "v6.2.0": True,
3584                        "v6.2.3": True,
3585                        "v6.2.5": True,
3586                        "v6.2.7": True,
3587                        "v6.0.11": True
3588                    }
3589                },
3590                "user_domain": {
3591                    "type": "string",
3592                    "revisions": {
3593                        "v6.0.0": True,
3594                        "v6.0.5": True,
3595                        "v6.2.0": True,
3596                        "v6.2.3": True,
3597                        "v6.2.5": True,
3598                        "v6.2.7": True,
3599                        "v6.0.11": True
3600                    }
3601                }
3602            },
3603            "revisions": {
3604                "v6.0.0": True,
3605                "v6.0.5": True,
3606                "v6.2.0": True,
3607                "v6.2.3": True,
3608                "v6.2.5": True,
3609                "v6.2.7": True,
3610                "v6.0.11": True
3611            }
3612        },
3613        "mm7_convert_hex": {
3614            "type": "string",
3615            "options": [
3616                {
3617                    "value": "enable",
3618                    "revisions": {
3619                        "v6.0.0": True,
3620                        "v6.0.5": True,
3621                        "v6.2.0": True,
3622                        "v6.2.3": True,
3623                        "v6.2.5": True,
3624                        "v6.2.7": True,
3625                        "v6.0.11": True
3626                    }
3627                },
3628                {
3629                    "value": "disable",
3630                    "revisions": {
3631                        "v6.0.0": True,
3632                        "v6.0.5": True,
3633                        "v6.2.0": True,
3634                        "v6.2.3": True,
3635                        "v6.2.5": True,
3636                        "v6.2.7": True,
3637                        "v6.0.11": True
3638                    }
3639                }
3640            ],
3641            "revisions": {
3642                "v6.0.0": True,
3643                "v6.0.5": True,
3644                "v6.2.0": True,
3645                "v6.2.3": True,
3646                "v6.2.5": True,
3647                "v6.2.7": True,
3648                "v6.0.11": True
3649            }
3650        },
3651        "mm3oversizelimit": {
3652            "type": "integer",
3653            "revisions": {
3654                "v6.0.0": True,
3655                "v6.0.5": True,
3656                "v6.2.0": True,
3657                "v6.2.3": True,
3658                "v6.2.5": True,
3659                "v6.2.7": True,
3660                "v6.0.11": True
3661            }
3662        },
3663        "mm7comfortinterval": {
3664            "type": "integer",
3665            "revisions": {
3666                "v6.0.0": True,
3667                "v6.0.5": True,
3668                "v6.2.0": True,
3669                "v6.2.3": True,
3670                "v6.2.5": True,
3671                "v6.2.7": True,
3672                "v6.0.11": True
3673            }
3674        },
3675        "mm1oversizelimit": {
3676            "type": "integer",
3677            "revisions": {
3678                "v6.0.0": True,
3679                "v6.0.5": True,
3680                "v6.2.0": True,
3681                "v6.2.3": True,
3682                "v6.2.5": True,
3683                "v6.2.7": True,
3684                "v6.0.11": True
3685            }
3686        },
3687        "flood": {
3688            "type": "list",
3689            "children": {
3690                "status1": {
3691                    "type": "string",
3692                    "options": [
3693                        {
3694                            "value": "enable",
3695                            "revisions": {
3696                                "v6.0.0": True,
3697                                "v6.0.5": True,
3698                                "v6.2.0": True,
3699                                "v6.2.3": True,
3700                                "v6.2.5": True,
3701                                "v6.2.7": True,
3702                                "v6.0.11": True
3703                            }
3704                        },
3705                        {
3706                            "value": "disable",
3707                            "revisions": {
3708                                "v6.0.0": True,
3709                                "v6.0.5": True,
3710                                "v6.2.0": True,
3711                                "v6.2.3": True,
3712                                "v6.2.5": True,
3713                                "v6.2.7": True,
3714                                "v6.0.11": True
3715                            }
3716                        }
3717                    ],
3718                    "revisions": {
3719                        "v6.0.0": True,
3720                        "v6.0.5": True,
3721                        "v6.2.0": True,
3722                        "v6.2.3": True,
3723                        "v6.2.5": True,
3724                        "v6.2.7": True,
3725                        "v6.0.11": True
3726                    }
3727                },
3728                "limit3": {
3729                    "type": "integer",
3730                    "revisions": {
3731                        "v6.0.0": True,
3732                        "v6.0.5": True,
3733                        "v6.2.0": True,
3734                        "v6.2.3": True,
3735                        "v6.2.5": True,
3736                        "v6.2.7": True,
3737                        "v6.0.11": True
3738                    }
3739                },
3740                "status3": {
3741                    "type": "string",
3742                    "options": [
3743                        {
3744                            "value": "enable",
3745                            "revisions": {
3746                                "v6.0.0": True,
3747                                "v6.0.5": True,
3748                                "v6.2.0": True,
3749                                "v6.2.3": True,
3750                                "v6.2.5": True,
3751                                "v6.2.7": True,
3752                                "v6.0.11": True
3753                            }
3754                        },
3755                        {
3756                            "value": "disable",
3757                            "revisions": {
3758                                "v6.0.0": True,
3759                                "v6.0.5": True,
3760                                "v6.2.0": True,
3761                                "v6.2.3": True,
3762                                "v6.2.5": True,
3763                                "v6.2.7": True,
3764                                "v6.0.11": True
3765                            }
3766                        }
3767                    ],
3768                    "revisions": {
3769                        "v6.0.0": True,
3770                        "v6.0.5": True,
3771                        "v6.2.0": True,
3772                        "v6.2.3": True,
3773                        "v6.2.5": True,
3774                        "v6.2.7": True,
3775                        "v6.0.11": True
3776                    }
3777                },
3778                "status2": {
3779                    "type": "string",
3780                    "options": [
3781                        {
3782                            "value": "enable",
3783                            "revisions": {
3784                                "v6.0.0": True,
3785                                "v6.0.5": True,
3786                                "v6.2.0": True,
3787                                "v6.2.3": True,
3788                                "v6.2.5": True,
3789                                "v6.2.7": True,
3790                                "v6.0.11": True
3791                            }
3792                        },
3793                        {
3794                            "value": "disable",
3795                            "revisions": {
3796                                "v6.0.0": True,
3797                                "v6.0.5": True,
3798                                "v6.2.0": True,
3799                                "v6.2.3": True,
3800                                "v6.2.5": True,
3801                                "v6.2.7": True,
3802                                "v6.0.11": True
3803                            }
3804                        }
3805                    ],
3806                    "revisions": {
3807                        "v6.0.0": True,
3808                        "v6.0.5": True,
3809                        "v6.2.0": True,
3810                        "v6.2.3": True,
3811                        "v6.2.5": True,
3812                        "v6.2.7": True,
3813                        "v6.0.11": True
3814                    }
3815                },
3816                "window3": {
3817                    "type": "integer",
3818                    "revisions": {
3819                        "v6.0.0": True,
3820                        "v6.0.5": True,
3821                        "v6.2.0": True,
3822                        "v6.2.3": True,
3823                        "v6.2.5": True,
3824                        "v6.2.7": True,
3825                        "v6.0.11": True
3826                    }
3827                },
3828                "window2": {
3829                    "type": "integer",
3830                    "revisions": {
3831                        "v6.0.0": True,
3832                        "v6.0.5": True,
3833                        "v6.2.0": True,
3834                        "v6.2.3": True,
3835                        "v6.2.5": True,
3836                        "v6.2.7": True,
3837                        "v6.0.11": True
3838                    }
3839                },
3840                "window1": {
3841                    "type": "integer",
3842                    "revisions": {
3843                        "v6.0.0": True,
3844                        "v6.0.5": True,
3845                        "v6.2.0": True,
3846                        "v6.2.3": True,
3847                        "v6.2.5": True,
3848                        "v6.2.7": True,
3849                        "v6.0.11": True
3850                    }
3851                },
3852                "limit2": {
3853                    "type": "integer",
3854                    "revisions": {
3855                        "v6.0.0": True,
3856                        "v6.0.5": True,
3857                        "v6.2.0": True,
3858                        "v6.2.3": True,
3859                        "v6.2.5": True,
3860                        "v6.2.7": True,
3861                        "v6.0.11": True
3862                    }
3863                },
3864                "action1": {
3865                    "multiple_values": True,
3866                    "type": "list",
3867                    "options": [
3868                        {
3869                            "value": "block",
3870                            "revisions": {
3871                                "v6.0.0": True,
3872                                "v6.0.5": True,
3873                                "v6.2.0": True,
3874                                "v6.2.3": True,
3875                                "v6.2.5": True,
3876                                "v6.2.7": True,
3877                                "v6.0.11": True
3878                            }
3879                        },
3880                        {
3881                            "value": "archive",
3882                            "revisions": {
3883                                "v6.0.0": True,
3884                                "v6.0.5": True,
3885                                "v6.2.0": True,
3886                                "v6.2.3": True,
3887                                "v6.2.5": True,
3888                                "v6.2.7": True,
3889                                "v6.0.11": True
3890                            }
3891                        },
3892                        {
3893                            "value": "log",
3894                            "revisions": {
3895                                "v6.0.0": True,
3896                                "v6.0.5": True,
3897                                "v6.2.0": True,
3898                                "v6.2.3": True,
3899                                "v6.2.5": True,
3900                                "v6.2.7": True,
3901                                "v6.0.11": True
3902                            }
3903                        },
3904                        {
3905                            "value": "archive-first",
3906                            "revisions": {
3907                                "v6.0.0": True,
3908                                "v6.0.5": True,
3909                                "v6.2.0": True,
3910                                "v6.2.3": True,
3911                                "v6.2.5": True,
3912                                "v6.2.7": True,
3913                                "v6.0.11": True
3914                            }
3915                        },
3916                        {
3917                            "value": "alert-notif",
3918                            "revisions": {
3919                                "v6.0.0": True,
3920                                "v6.0.5": True,
3921                                "v6.2.0": True,
3922                                "v6.2.3": True,
3923                                "v6.2.5": True,
3924                                "v6.2.7": True,
3925                                "v6.0.11": True
3926                            }
3927                        }
3928                    ],
3929                    "revisions": {
3930                        "v6.0.0": True,
3931                        "v6.0.5": True,
3932                        "v6.2.0": True,
3933                        "v6.2.3": True,
3934                        "v6.2.5": True,
3935                        "v6.2.7": True,
3936                        "v6.0.11": True
3937                    }
3938                },
3939                "action3": {
3940                    "multiple_values": True,
3941                    "type": "list",
3942                    "options": [
3943                        {
3944                            "value": "block",
3945                            "revisions": {
3946                                "v6.0.0": True,
3947                                "v6.0.5": True,
3948                                "v6.2.0": True,
3949                                "v6.2.3": True,
3950                                "v6.2.5": True,
3951                                "v6.2.7": True,
3952                                "v6.0.11": True
3953                            }
3954                        },
3955                        {
3956                            "value": "archive",
3957                            "revisions": {
3958                                "v6.0.0": True,
3959                                "v6.0.5": True,
3960                                "v6.2.0": True,
3961                                "v6.2.3": True,
3962                                "v6.2.5": True,
3963                                "v6.2.7": True,
3964                                "v6.0.11": True
3965                            }
3966                        },
3967                        {
3968                            "value": "log",
3969                            "revisions": {
3970                                "v6.0.0": True,
3971                                "v6.0.5": True,
3972                                "v6.2.0": True,
3973                                "v6.2.3": True,
3974                                "v6.2.5": True,
3975                                "v6.2.7": True,
3976                                "v6.0.11": True
3977                            }
3978                        },
3979                        {
3980                            "value": "archive-first",
3981                            "revisions": {
3982                                "v6.0.0": True,
3983                                "v6.0.5": True,
3984                                "v6.2.0": True,
3985                                "v6.2.3": True,
3986                                "v6.2.5": True,
3987                                "v6.2.7": True,
3988                                "v6.0.11": True
3989                            }
3990                        },
3991                        {
3992                            "value": "alert-notif",
3993                            "revisions": {
3994                                "v6.0.0": True,
3995                                "v6.0.5": True,
3996                                "v6.2.0": True,
3997                                "v6.2.3": True,
3998                                "v6.2.5": True,
3999                                "v6.2.7": True,
4000                                "v6.0.11": True
4001                            }
4002                        }
4003                    ],
4004                    "revisions": {
4005                        "v6.0.0": True,
4006                        "v6.0.5": True,
4007                        "v6.2.0": True,
4008                        "v6.2.3": True,
4009                        "v6.2.5": True,
4010                        "v6.2.7": True,
4011                        "v6.0.11": True
4012                    }
4013                },
4014                "action2": {
4015                    "multiple_values": True,
4016                    "type": "list",
4017                    "options": [
4018                        {
4019                            "value": "block",
4020                            "revisions": {
4021                                "v6.0.0": True,
4022                                "v6.0.5": True,
4023                                "v6.2.0": True,
4024                                "v6.2.3": True,
4025                                "v6.2.5": True,
4026                                "v6.2.7": True,
4027                                "v6.0.11": True
4028                            }
4029                        },
4030                        {
4031                            "value": "archive",
4032                            "revisions": {
4033                                "v6.0.0": True,
4034                                "v6.0.5": True,
4035                                "v6.2.0": True,
4036                                "v6.2.3": True,
4037                                "v6.2.5": True,
4038                                "v6.2.7": True,
4039                                "v6.0.11": True
4040                            }
4041                        },
4042                        {
4043                            "value": "log",
4044                            "revisions": {
4045                                "v6.0.0": True,
4046                                "v6.0.5": True,
4047                                "v6.2.0": True,
4048                                "v6.2.3": True,
4049                                "v6.2.5": True,
4050                                "v6.2.7": True,
4051                                "v6.0.11": True
4052                            }
4053                        },
4054                        {
4055                            "value": "archive-first",
4056                            "revisions": {
4057                                "v6.0.0": True,
4058                                "v6.0.5": True,
4059                                "v6.2.0": True,
4060                                "v6.2.3": True,
4061                                "v6.2.5": True,
4062                                "v6.2.7": True,
4063                                "v6.0.11": True
4064                            }
4065                        },
4066                        {
4067                            "value": "alert-notif",
4068                            "revisions": {
4069                                "v6.0.0": True,
4070                                "v6.0.5": True,
4071                                "v6.2.0": True,
4072                                "v6.2.3": True,
4073                                "v6.2.5": True,
4074                                "v6.2.7": True,
4075                                "v6.0.11": True
4076                            }
4077                        }
4078                    ],
4079                    "revisions": {
4080                        "v6.0.0": True,
4081                        "v6.0.5": True,
4082                        "v6.2.0": True,
4083                        "v6.2.3": True,
4084                        "v6.2.5": True,
4085                        "v6.2.7": True,
4086                        "v6.0.11": True
4087                    }
4088                },
4089                "block_time1": {
4090                    "type": "integer",
4091                    "revisions": {
4092                        "v6.0.0": True,
4093                        "v6.0.5": True,
4094                        "v6.2.0": True,
4095                        "v6.2.3": True,
4096                        "v6.2.5": True,
4097                        "v6.2.7": True,
4098                        "v6.0.11": True
4099                    }
4100                },
4101                "block_time2": {
4102                    "type": "integer",
4103                    "revisions": {
4104                        "v6.0.0": True,
4105                        "v6.0.5": True,
4106                        "v6.2.0": True,
4107                        "v6.2.3": True,
4108                        "v6.2.5": True,
4109                        "v6.2.7": True,
4110                        "v6.0.11": True
4111                    }
4112                },
4113                "block_time3": {
4114                    "type": "integer",
4115                    "revisions": {
4116                        "v6.0.0": True,
4117                        "v6.0.5": True,
4118                        "v6.2.0": True,
4119                        "v6.2.3": True,
4120                        "v6.2.5": True,
4121                        "v6.2.7": True,
4122                        "v6.0.11": True
4123                    }
4124                },
4125                "protocol": {
4126                    "type": "string",
4127                    "revisions": {
4128                        "v6.0.0": True,
4129                        "v6.0.5": True,
4130                        "v6.2.0": True,
4131                        "v6.2.3": True,
4132                        "v6.2.5": True,
4133                        "v6.2.7": True,
4134                        "v6.0.11": True
4135                    }
4136                },
4137                "limit1": {
4138                    "type": "integer",
4139                    "revisions": {
4140                        "v6.0.0": True,
4141                        "v6.0.5": True,
4142                        "v6.2.0": True,
4143                        "v6.2.3": True,
4144                        "v6.2.5": True,
4145                        "v6.2.7": True,
4146                        "v6.0.11": True
4147                    }
4148                }
4149            },
4150            "revisions": {
4151                "v6.0.0": True,
4152                "v6.0.5": True,
4153                "v6.2.0": True,
4154                "v6.2.3": True,
4155                "v6.2.5": True,
4156                "v6.2.7": True,
4157                "v6.0.11": True
4158            }
4159        },
4160        "mm7_addr_hdr": {
4161            "type": "string",
4162            "revisions": {
4163                "v6.0.0": True,
4164                "v6.0.5": True,
4165                "v6.2.0": True,
4166                "v6.2.3": True,
4167                "v6.2.5": True,
4168                "v6.2.7": True,
4169                "v6.0.11": True
4170            }
4171        },
4172        "mms_av_virus_log": {
4173            "type": "string",
4174            "options": [
4175                {
4176                    "value": "enable",
4177                    "revisions": {
4178                        "v6.0.0": True,
4179                        "v6.0.5": True,
4180                        "v6.2.0": True,
4181                        "v6.2.3": True,
4182                        "v6.2.5": True,
4183                        "v6.2.7": True,
4184                        "v6.0.11": True
4185                    }
4186                },
4187                {
4188                    "value": "disable",
4189                    "revisions": {
4190                        "v6.0.0": True,
4191                        "v6.0.5": True,
4192                        "v6.2.0": True,
4193                        "v6.2.3": True,
4194                        "v6.2.5": True,
4195                        "v6.2.7": True,
4196                        "v6.0.11": True
4197                    }
4198                }
4199            ],
4200            "revisions": {
4201                "v6.0.0": True,
4202                "v6.0.5": True,
4203                "v6.2.0": True,
4204                "v6.2.3": True,
4205                "v6.2.5": True,
4206                "v6.2.7": True,
4207                "v6.0.11": True
4208            }
4209        },
4210        "mms_av_oversize_log": {
4211            "type": "string",
4212            "options": [
4213                {
4214                    "value": "enable",
4215                    "revisions": {
4216                        "v6.0.0": True,
4217                        "v6.0.5": True,
4218                        "v6.2.0": True,
4219                        "v6.2.3": True,
4220                        "v6.2.5": True,
4221                        "v6.2.7": True,
4222                        "v6.0.11": True
4223                    }
4224                },
4225                {
4226                    "value": "disable",
4227                    "revisions": {
4228                        "v6.0.0": True,
4229                        "v6.0.5": True,
4230                        "v6.2.0": True,
4231                        "v6.2.3": True,
4232                        "v6.2.5": True,
4233                        "v6.2.7": True,
4234                        "v6.0.11": True
4235                    }
4236                }
4237            ],
4238            "revisions": {
4239                "v6.0.0": True,
4240                "v6.0.5": True,
4241                "v6.2.0": True,
4242                "v6.2.3": True,
4243                "v6.2.5": True,
4244                "v6.2.7": True,
4245                "v6.0.11": True
4246            }
4247        },
4248        "carrier_endpoint_prefix_range_min": {
4249            "type": "integer",
4250            "revisions": {
4251                "v6.0.0": True,
4252                "v6.0.5": True,
4253                "v6.2.0": True,
4254                "v6.2.3": True,
4255                "v6.2.5": True,
4256                "v6.2.7": True,
4257                "v6.0.11": True
4258            }
4259        },
4260        "mms_carrier_endpoint_filter_log": {
4261            "type": "string",
4262            "options": [
4263                {
4264                    "value": "enable",
4265                    "revisions": {
4266                        "v6.0.0": True,
4267                        "v6.0.5": True,
4268                        "v6.2.0": True,
4269                        "v6.2.3": True,
4270                        "v6.2.5": True,
4271                        "v6.2.7": True,
4272                        "v6.0.11": True
4273                    }
4274                },
4275                {
4276                    "value": "disable",
4277                    "revisions": {
4278                        "v6.0.0": True,
4279                        "v6.0.5": True,
4280                        "v6.2.0": True,
4281                        "v6.2.3": True,
4282                        "v6.2.5": True,
4283                        "v6.2.7": True,
4284                        "v6.0.11": True
4285                    }
4286                }
4287            ],
4288            "revisions": {
4289                "v6.0.0": True,
4290                "v6.0.5": True,
4291                "v6.2.0": True,
4292                "v6.2.3": True,
4293                "v6.2.5": True,
4294                "v6.2.7": True,
4295                "v6.0.11": True
4296            }
4297        },
4298        "mm7comfortamount": {
4299            "type": "integer",
4300            "revisions": {
4301                "v6.0.0": True,
4302                "v6.0.5": True,
4303                "v6.2.0": True,
4304                "v6.2.3": True,
4305                "v6.2.5": True,
4306                "v6.2.7": True,
4307                "v6.0.11": True
4308            }
4309        },
4310        "notif_msisdn": {
4311            "type": "list",
4312            "children": {
4313                "msisdn": {
4314                    "type": "string",
4315                    "revisions": {
4316                        "v6.0.0": True,
4317                        "v6.0.5": True,
4318                        "v6.2.0": True,
4319                        "v6.2.3": True,
4320                        "v6.2.5": True,
4321                        "v6.2.7": True,
4322                        "v6.0.11": True
4323                    }
4324                },
4325                "threshold": {
4326                    "multiple_values": True,
4327                    "type": "list",
4328                    "options": [
4329                        {
4330                            "value": "flood-thresh-1",
4331                            "revisions": {
4332                                "v6.0.0": True,
4333                                "v6.0.5": True,
4334                                "v6.2.0": True,
4335                                "v6.2.3": True,
4336                                "v6.2.5": True,
4337                                "v6.2.7": True,
4338                                "v6.0.11": True
4339                            }
4340                        },
4341                        {
4342                            "value": "flood-thresh-2",
4343                            "revisions": {
4344                                "v6.0.0": True,
4345                                "v6.0.5": True,
4346                                "v6.2.0": True,
4347                                "v6.2.3": True,
4348                                "v6.2.5": True,
4349                                "v6.2.7": True,
4350                                "v6.0.11": True
4351                            }
4352                        },
4353                        {
4354                            "value": "flood-thresh-3",
4355                            "revisions": {
4356                                "v6.0.0": True,
4357                                "v6.0.5": True,
4358                                "v6.2.0": True,
4359                                "v6.2.3": True,
4360                                "v6.2.5": True,
4361                                "v6.2.7": True,
4362                                "v6.0.11": True
4363                            }
4364                        },
4365                        {
4366                            "value": "dupe-thresh-1",
4367                            "revisions": {
4368                                "v6.0.0": True,
4369                                "v6.0.5": True,
4370                                "v6.2.0": True,
4371                                "v6.2.3": True,
4372                                "v6.2.5": True,
4373                                "v6.2.7": True,
4374                                "v6.0.11": True
4375                            }
4376                        },
4377                        {
4378                            "value": "dupe-thresh-2",
4379                            "revisions": {
4380                                "v6.0.0": True,
4381                                "v6.0.5": True,
4382                                "v6.2.0": True,
4383                                "v6.2.3": True,
4384                                "v6.2.5": True,
4385                                "v6.2.7": True,
4386                                "v6.0.11": True
4387                            }
4388                        },
4389                        {
4390                            "value": "dupe-thresh-3",
4391                            "revisions": {
4392                                "v6.0.0": True,
4393                                "v6.0.5": True,
4394                                "v6.2.0": True,
4395                                "v6.2.3": True,
4396                                "v6.2.5": True,
4397                                "v6.2.7": True,
4398                                "v6.0.11": True
4399                            }
4400                        }
4401                    ],
4402                    "revisions": {
4403                        "v6.0.0": True,
4404                        "v6.0.5": True,
4405                        "v6.2.0": True,
4406                        "v6.2.3": True,
4407                        "v6.2.5": True,
4408                        "v6.2.7": True,
4409                        "v6.0.11": True
4410                    }
4411                }
4412            },
4413            "revisions": {
4414                "v6.0.0": True,
4415                "v6.0.5": True,
4416                "v6.2.0": True,
4417                "v6.2.3": True,
4418                "v6.2.5": True,
4419                "v6.2.7": True,
4420                "v6.0.11": True
4421            }
4422        },
4423        "mms_web_content_log": {
4424            "type": "string",
4425            "options": [
4426                {
4427                    "value": "enable",
4428                    "revisions": {
4429                        "v6.0.0": True,
4430                        "v6.0.5": True,
4431                        "v6.2.0": True,
4432                        "v6.2.3": True,
4433                        "v6.2.5": True,
4434                        "v6.2.7": True,
4435                        "v6.0.11": True
4436                    }
4437                },
4438                {
4439                    "value": "disable",
4440                    "revisions": {
4441                        "v6.0.0": True,
4442                        "v6.0.5": True,
4443                        "v6.2.0": True,
4444                        "v6.2.3": True,
4445                        "v6.2.5": True,
4446                        "v6.2.7": True,
4447                        "v6.0.11": True
4448                    }
4449                }
4450            ],
4451            "revisions": {
4452                "v6.0.0": True,
4453                "v6.0.5": True,
4454                "v6.2.0": True,
4455                "v6.2.3": True,
4456                "v6.2.5": True,
4457                "v6.2.7": True,
4458                "v6.0.11": True
4459            }
4460        },
4461        "mm1_retrieve_scan": {
4462            "type": "string",
4463            "options": [
4464                {
4465                    "value": "enable",
4466                    "revisions": {
4467                        "v6.0.0": True,
4468                        "v6.0.5": True,
4469                        "v6.2.0": True,
4470                        "v6.2.3": True,
4471                        "v6.2.5": True,
4472                        "v6.2.7": True,
4473                        "v6.0.11": True
4474                    }
4475                },
4476                {
4477                    "value": "disable",
4478                    "revisions": {
4479                        "v6.0.0": True,
4480                        "v6.0.5": True,
4481                        "v6.2.0": True,
4482                        "v6.2.3": True,
4483                        "v6.2.5": True,
4484                        "v6.2.7": True,
4485                        "v6.0.11": True
4486                    }
4487                }
4488            ],
4489            "revisions": {
4490                "v6.0.0": True,
4491                "v6.0.5": True,
4492                "v6.2.0": True,
4493                "v6.2.3": True,
4494                "v6.2.5": True,
4495                "v6.2.7": True,
4496                "v6.0.11": True
4497            }
4498        },
4499        "mm1_retr_dupe": {
4500            "type": "string",
4501            "options": [
4502                {
4503                    "value": "enable",
4504                    "revisions": {
4505                        "v6.0.0": True,
4506                        "v6.0.5": True,
4507                        "v6.2.0": True,
4508                        "v6.2.3": True,
4509                        "v6.2.5": True,
4510                        "v6.2.7": True,
4511                        "v6.0.11": True
4512                    }
4513                },
4514                {
4515                    "value": "disable",
4516                    "revisions": {
4517                        "v6.0.0": True,
4518                        "v6.0.5": True,
4519                        "v6.2.0": True,
4520                        "v6.2.3": True,
4521                        "v6.2.5": True,
4522                        "v6.2.7": True,
4523                        "v6.0.11": True
4524                    }
4525                }
4526            ],
4527            "revisions": {
4528                "v6.0.0": True,
4529                "v6.0.5": True,
4530                "v6.2.0": True,
4531                "v6.2.3": True,
4532                "v6.2.5": True,
4533                "v6.2.7": True,
4534                "v6.0.11": True
4535            }
4536        },
4537        "mm1comfortamount": {
4538            "type": "integer",
4539            "revisions": {
4540                "v6.0.0": True,
4541                "v6.0.5": True,
4542                "v6.2.0": True,
4543                "v6.2.3": True,
4544                "v6.2.5": True,
4545                "v6.2.7": True,
4546                "v6.0.11": True
4547            }
4548        },
4549        "mm7_addr_source": {
4550            "type": "string",
4551            "options": [
4552                {
4553                    "value": "http-header",
4554                    "revisions": {
4555                        "v6.0.0": True,
4556                        "v6.0.5": True,
4557                        "v6.2.0": True,
4558                        "v6.2.3": True,
4559                        "v6.2.5": True,
4560                        "v6.2.7": True,
4561                        "v6.0.11": True
4562                    }
4563                },
4564                {
4565                    "value": "cookie",
4566                    "revisions": {
4567                        "v6.0.0": True,
4568                        "v6.0.5": True,
4569                        "v6.2.0": True,
4570                        "v6.2.3": True,
4571                        "v6.2.5": True,
4572                        "v6.2.7": True,
4573                        "v6.0.11": True
4574                    }
4575                }
4576            ],
4577            "revisions": {
4578                "v6.0.0": True,
4579                "v6.0.5": True,
4580                "v6.2.0": True,
4581                "v6.2.3": True,
4582                "v6.2.5": True,
4583                "v6.2.7": True,
4584                "v6.0.11": True
4585            }
4586        },
4587        "mm7oversizelimit": {
4588            "type": "integer",
4589            "revisions": {
4590                "v6.0.0": True,
4591                "v6.0.5": True,
4592                "v6.2.0": True,
4593                "v6.2.3": True,
4594                "v6.2.5": True,
4595                "v6.2.7": True,
4596                "v6.0.11": True
4597            }
4598        },
4599        "avnotificationtable": {
4600            "type": "integer",
4601            "revisions": {
4602                "v6.0.0": True,
4603                "v6.0.5": True,
4604                "v6.2.0": True,
4605                "v6.2.3": True,
4606                "v6.2.5": True,
4607                "v6.2.7": True,
4608                "v6.0.11": True
4609            }
4610        },
4611        "mms_checksum_table": {
4612            "type": "integer",
4613            "revisions": {
4614                "v6.0.0": True,
4615                "v6.0.5": True,
4616                "v6.2.0": True,
4617                "v6.2.3": True,
4618                "v6.2.5": True,
4619                "v6.2.7": True,
4620                "v6.0.11": True
4621            }
4622        },
4623        "outbreak_prevention": {
4624            "type": "dict",
4625            "children": {
4626                "external_blocklist": {
4627                    "type": "string",
4628                    "options": [
4629                        {
4630                            "value": "disable",
4631                            "revisions": {
4632                                "v6.2.0": True,
4633                                "v6.2.3": True,
4634                                "v6.2.5": True,
4635                                "v6.2.7": True
4636                            }
4637                        },
4638                        {
4639                            "value": "enable",
4640                            "revisions": {
4641                                "v6.2.0": True,
4642                                "v6.2.3": True,
4643                                "v6.2.5": True,
4644                                "v6.2.7": True
4645                            }
4646                        }
4647                    ],
4648                    "revisions": {
4649                        "v6.2.0": True,
4650                        "v6.2.3": True,
4651                        "v6.2.5": True,
4652                        "v6.2.7": True
4653                    }
4654                },
4655                "ftgd_service": {
4656                    "type": "string",
4657                    "options": [
4658                        {
4659                            "value": "disable",
4660                            "revisions": {
4661                                "v6.2.0": True,
4662                                "v6.2.3": True,
4663                                "v6.2.5": True,
4664                                "v6.2.7": True
4665                            }
4666                        },
4667                        {
4668                            "value": "enable",
4669                            "revisions": {
4670                                "v6.2.0": True,
4671                                "v6.2.3": True,
4672                                "v6.2.5": True,
4673                                "v6.2.7": True
4674                            }
4675                        }
4676                    ],
4677                    "revisions": {
4678                        "v6.2.0": True,
4679                        "v6.2.3": True,
4680                        "v6.2.5": True,
4681                        "v6.2.7": True
4682                    }
4683                }
4684            },
4685            "revisions": {
4686                "v6.2.0": True,
4687                "v6.2.3": True,
4688                "v6.2.5": True,
4689                "v6.2.7": True
4690            }
4691        },
4692        "mm1comfortinterval": {
4693            "type": "integer",
4694            "revisions": {
4695                "v6.0.0": True,
4696                "v6.0.5": True,
4697                "v6.2.0": True,
4698                "v6.2.3": True,
4699                "v6.2.5": True,
4700                "v6.2.7": True,
4701                "v6.0.11": True
4702            }
4703        },
4704        "name": {
4705            "type": "string",
4706            "revisions": {
4707                "v6.0.0": True,
4708                "v6.0.5": True,
4709                "v6.2.0": True,
4710                "v6.2.3": True,
4711                "v6.2.5": True,
4712                "v6.2.7": True,
4713                "v6.0.11": True
4714            }
4715        },
4716        "remove_blocked_const_length": {
4717            "type": "string",
4718            "options": [
4719                {
4720                    "value": "enable",
4721                    "revisions": {
4722                        "v6.0.0": True,
4723                        "v6.0.5": True,
4724                        "v6.2.0": True,
4725                        "v6.2.3": True,
4726                        "v6.2.5": True,
4727                        "v6.2.7": True,
4728                        "v6.0.11": True
4729                    }
4730                },
4731                {
4732                    "value": "disable",
4733                    "revisions": {
4734                        "v6.0.0": True,
4735                        "v6.0.5": True,
4736                        "v6.2.0": True,
4737                        "v6.2.3": True,
4738                        "v6.2.5": True,
4739                        "v6.2.7": True,
4740                        "v6.0.11": True
4741                    }
4742                }
4743            ],
4744            "revisions": {
4745                "v6.0.0": True,
4746                "v6.0.5": True,
4747                "v6.2.0": True,
4748                "v6.2.3": True,
4749                "v6.2.5": True,
4750                "v6.2.7": True,
4751                "v6.0.11": True
4752            }
4753        },
4754        "carrierendpointbwltable": {
4755            "type": "integer",
4756            "revisions": {
4757                "v6.0.0": True,
4758                "v6.0.5": True,
4759                "v6.2.0": True,
4760                "v6.2.3": True,
4761                "v6.2.5": True,
4762                "v6.2.7": True,
4763                "v6.0.11": True
4764            }
4765        },
4766        "mm1_addr_hdr": {
4767            "type": "string",
4768            "revisions": {
4769                "v6.0.0": True,
4770                "v6.0.5": True,
4771                "v6.2.0": True,
4772                "v6.2.3": True,
4773                "v6.2.5": True,
4774                "v6.2.7": True,
4775                "v6.0.11": True
4776            }
4777        },
4778        "extended_utm_log": {
4779            "type": "string",
4780            "revisions": {
4781                "v6.0.0": True,
4782                "v6.0.5": True,
4783                "v6.2.0": True,
4784                "v6.2.3": True,
4785                "v6.2.5": True,
4786                "v6.2.7": True,
4787                "v6.0.11": True
4788            }
4789        },
4790        "mms_av_block_log": {
4791            "type": "string",
4792            "options": [
4793                {
4794                    "value": "enable",
4795                    "revisions": {
4796                        "v6.0.0": True,
4797                        "v6.0.5": True,
4798                        "v6.2.0": True,
4799                        "v6.2.3": True,
4800                        "v6.2.5": True,
4801                        "v6.2.7": True,
4802                        "v6.0.11": True
4803                    }
4804                },
4805                {
4806                    "value": "disable",
4807                    "revisions": {
4808                        "v6.0.0": True,
4809                        "v6.0.5": True,
4810                        "v6.2.0": True,
4811                        "v6.2.3": True,
4812                        "v6.2.5": True,
4813                        "v6.2.7": True,
4814                        "v6.0.11": True
4815                    }
4816                }
4817            ],
4818            "revisions": {
4819                "v6.0.0": True,
4820                "v6.0.5": True,
4821                "v6.2.0": True,
4822                "v6.2.3": True,
4823                "v6.2.5": True,
4824                "v6.2.7": True,
4825                "v6.0.11": True
4826            }
4827        },
4828        "carrier_endpoint_prefix_range_max": {
4829            "type": "integer",
4830            "revisions": {
4831                "v6.0.0": True,
4832                "v6.0.5": True,
4833                "v6.2.0": True,
4834                "v6.2.3": True,
4835                "v6.2.5": True,
4836                "v6.2.7": True,
4837                "v6.0.11": True
4838            }
4839        },
4840        "mm3_outbreak_prevention": {
4841            "type": "string",
4842            "options": [
4843                {
4844                    "value": "disabled",
4845                    "revisions": {
4846                        "v6.0.0": True,
4847                        "v6.0.5": True,
4848                        "v6.2.0": True,
4849                        "v6.2.3": True,
4850                        "v6.2.5": True,
4851                        "v6.2.7": True,
4852                        "v6.0.11": True
4853                    }
4854                },
4855                {
4856                    "value": "files",
4857                    "revisions": {
4858                        "v6.0.0": True,
4859                        "v6.0.5": True,
4860                        "v6.2.0": True,
4861                        "v6.2.3": True,
4862                        "v6.2.5": True,
4863                        "v6.2.7": True,
4864                        "v6.0.11": True
4865                    }
4866                },
4867                {
4868                    "value": "full-archive",
4869                    "revisions": {
4870                        "v6.0.0": True,
4871                        "v6.0.5": True,
4872                        "v6.2.0": True,
4873                        "v6.2.3": True,
4874                        "v6.2.5": True,
4875                        "v6.2.7": True,
4876                        "v6.0.11": True
4877                    }
4878                }
4879            ],
4880            "revisions": {
4881                "v6.0.0": True,
4882                "v6.0.5": True,
4883                "v6.2.0": True,
4884                "v6.2.3": True,
4885                "v6.2.5": True,
4886                "v6.2.7": True,
4887                "v6.0.11": True
4888            }
4889        },
4890        "mm4_outbreak_prevention": {
4891            "type": "string",
4892            "options": [
4893                {
4894                    "value": "disabled",
4895                    "revisions": {
4896                        "v6.0.0": True,
4897                        "v6.0.5": True,
4898                        "v6.2.0": True,
4899                        "v6.2.3": True,
4900                        "v6.2.5": True,
4901                        "v6.2.7": True,
4902                        "v6.0.11": True
4903                    }
4904                },
4905                {
4906                    "value": "files",
4907                    "revisions": {
4908                        "v6.0.0": True,
4909                        "v6.0.5": True,
4910                        "v6.2.0": True,
4911                        "v6.2.3": True,
4912                        "v6.2.5": True,
4913                        "v6.2.7": True,
4914                        "v6.0.11": True
4915                    }
4916                },
4917                {
4918                    "value": "full-archive",
4919                    "revisions": {
4920                        "v6.0.0": True,
4921                        "v6.0.5": True,
4922                        "v6.2.0": True,
4923                        "v6.2.3": True,
4924                        "v6.2.5": True,
4925                        "v6.2.7": True,
4926                        "v6.0.11": True
4927                    }
4928                }
4929            ],
4930            "revisions": {
4931                "v6.0.0": True,
4932                "v6.0.5": True,
4933                "v6.2.0": True,
4934                "v6.2.3": True,
4935                "v6.2.5": True,
4936                "v6.2.7": True,
4937                "v6.0.11": True
4938            }
4939        },
4940        "mm1_outbreak_prevention": {
4941            "type": "string",
4942            "options": [
4943                {
4944                    "value": "disabled",
4945                    "revisions": {
4946                        "v6.0.0": True,
4947                        "v6.0.5": True,
4948                        "v6.2.0": True,
4949                        "v6.2.3": True,
4950                        "v6.2.5": True,
4951                        "v6.2.7": True,
4952                        "v6.0.11": True
4953                    }
4954                },
4955                {
4956                    "value": "files",
4957                    "revisions": {
4958                        "v6.0.0": True,
4959                        "v6.0.5": True,
4960                        "v6.2.0": True,
4961                        "v6.2.3": True,
4962                        "v6.2.5": True,
4963                        "v6.2.7": True,
4964                        "v6.0.11": True
4965                    }
4966                },
4967                {
4968                    "value": "full-archive",
4969                    "revisions": {
4970                        "v6.0.0": True,
4971                        "v6.0.5": True,
4972                        "v6.2.0": True,
4973                        "v6.2.3": True,
4974                        "v6.2.5": True,
4975                        "v6.2.7": True,
4976                        "v6.0.11": True
4977                    }
4978                }
4979            ],
4980            "revisions": {
4981                "v6.0.0": True,
4982                "v6.0.5": True,
4983                "v6.2.0": True,
4984                "v6.2.3": True,
4985                "v6.2.5": True,
4986                "v6.2.7": True,
4987                "v6.0.11": True
4988            }
4989        },
4990        "mms_notification_log": {
4991            "type": "string",
4992            "options": [
4993                {
4994                    "value": "enable",
4995                    "revisions": {
4996                        "v6.0.0": True,
4997                        "v6.0.5": True,
4998                        "v6.2.0": True,
4999                        "v6.2.3": True,
5000                        "v6.2.5": True,
5001                        "v6.2.7": True,
5002                        "v6.0.11": True
5003                    }
5004                },
5005                {
5006                    "value": "disable",
5007                    "revisions": {
5008                        "v6.0.0": True,
5009                        "v6.0.5": True,
5010                        "v6.2.0": True,
5011                        "v6.2.3": True,
5012                        "v6.2.5": True,
5013                        "v6.2.7": True,
5014                        "v6.0.11": True
5015                    }
5016                }
5017            ],
5018            "revisions": {
5019                "v6.0.0": True,
5020                "v6.0.5": True,
5021                "v6.2.0": True,
5022                "v6.2.3": True,
5023                "v6.2.5": True,
5024                "v6.2.7": True,
5025                "v6.0.11": True
5026            }
5027        },
5028        "carrier_endpoint_prefix": {
5029            "type": "string",
5030            "options": [
5031                {
5032                    "value": "enable",
5033                    "revisions": {
5034                        "v6.0.0": True,
5035                        "v6.0.5": True,
5036                        "v6.2.0": True,
5037                        "v6.2.3": True,
5038                        "v6.2.5": True,
5039                        "v6.2.7": True,
5040                        "v6.0.11": True
5041                    }
5042                },
5043                {
5044                    "value": "disable",
5045                    "revisions": {
5046                        "v6.0.0": True,
5047                        "v6.0.5": True,
5048                        "v6.2.0": True,
5049                        "v6.2.3": True,
5050                        "v6.2.5": True,
5051                        "v6.2.7": True,
5052                        "v6.0.11": True
5053                    }
5054                }
5055            ],
5056            "revisions": {
5057                "v6.0.0": True,
5058                "v6.0.5": True,
5059                "v6.2.0": True,
5060                "v6.2.3": True,
5061                "v6.2.5": True,
5062                "v6.2.7": True,
5063                "v6.0.11": True
5064            }
5065        },
5066        "mm1_addr_source": {
5067            "type": "string",
5068            "options": [
5069                {
5070                    "value": "http-header",
5071                    "revisions": {
5072                        "v6.0.0": True,
5073                        "v6.0.5": True,
5074                        "v6.2.0": True,
5075                        "v6.2.3": True,
5076                        "v6.2.5": True,
5077                        "v6.2.7": True,
5078                        "v6.0.11": True
5079                    }
5080                },
5081                {
5082                    "value": "cookie",
5083                    "revisions": {
5084                        "v6.0.0": True,
5085                        "v6.0.5": True,
5086                        "v6.2.0": True,
5087                        "v6.2.3": True,
5088                        "v6.2.5": True,
5089                        "v6.2.7": True,
5090                        "v6.0.11": True
5091                    }
5092                }
5093            ],
5094            "revisions": {
5095                "v6.0.0": True,
5096                "v6.0.5": True,
5097                "v6.2.0": True,
5098                "v6.2.3": True,
5099                "v6.2.5": True,
5100                "v6.2.7": True,
5101                "v6.0.11": True
5102            }
5103        },
5104        "carrier_endpoint_prefix_string": {
5105            "type": "string",
5106            "revisions": {
5107                "v6.0.0": True,
5108                "v6.0.5": True,
5109                "v6.2.0": True,
5110                "v6.2.3": True,
5111                "v6.2.5": True,
5112                "v6.2.7": True,
5113                "v6.0.11": True
5114            }
5115        }
5116    },
5117    "revisions": {
5118        "v6.0.0": True,
5119        "v6.0.5": True,
5120        "v6.2.0": True,
5121        "v6.2.3": True,
5122        "v6.2.5": True,
5123        "v6.2.7": True,
5124        "v6.0.11": True
5125    }
5126}
5127
5128
5129def main():
5130    module_spec = schema_to_module_spec(versioned_schema)
5131    mkeyname = 'name'
5132    fields = {
5133        "access_token": {"required": False, "type": "str", "no_log": True},
5134        "enable_log": {"required": False, "type": bool},
5135        "vdom": {"required": False, "type": "str", "default": "root"},
5136        "state": {"required": True, "type": "str",
5137                  "choices": ["present", "absent"]},
5138        "firewall_mms_profile": {
5139            "required": False, "type": "dict", "default": None,
5140            "options": {
5141            }
5142        }
5143    }
5144    for attribute_name in module_spec['options']:
5145        fields["firewall_mms_profile"]['options'][attribute_name] = module_spec['options'][attribute_name]
5146        if mkeyname and mkeyname == attribute_name:
5147            fields["firewall_mms_profile"]['options'][attribute_name]['required'] = True
5148
5149    check_legacy_fortiosapi()
5150    module = AnsibleModule(argument_spec=fields,
5151                           supports_check_mode=False)
5152
5153    versions_check_result = None
5154    if module._socket_path:
5155        connection = Connection(module._socket_path)
5156        if 'access_token' in module.params:
5157            connection.set_option('access_token', module.params['access_token'])
5158
5159        if 'enable_log' in module.params:
5160            connection.set_option('enable_log', module.params['enable_log'])
5161        else:
5162            connection.set_option('enable_log', False)
5163        fos = FortiOSHandler(connection, module, mkeyname)
5164        versions_check_result = check_schema_versioning(fos, versioned_schema, "firewall_mms_profile")
5165
5166        is_error, has_changed, result = fortios_firewall(module.params, fos)
5167
5168    else:
5169        module.fail_json(**FAIL_SOCKET_MSG)
5170
5171    if versions_check_result and versions_check_result['matched'] is False:
5172        module.warn("Ansible has detected version mismatch between FortOS system and your playbook, see more details by specifying option -vvv")
5173
5174    if not is_error:
5175        if versions_check_result and versions_check_result['matched'] is False:
5176            module.exit_json(changed=has_changed, version_check_warning=versions_check_result, meta=result)
5177        else:
5178            module.exit_json(changed=has_changed, meta=result)
5179    else:
5180        if versions_check_result and versions_check_result['matched'] is False:
5181            module.fail_json(msg="Error in repo", version_check_warning=versions_check_result, meta=result)
5182        else:
5183            module.fail_json(msg="Error in repo", meta=result)
5184
5185
5186if __name__ == '__main__':
5187    main()
5188