# Source code for api.system.notification.v1.rule

    """Autogenerated API"""
    import requests
    from argus_cli.plugin import register_command

    @register_command(extending=('system','notification','v1','rule'))
    def list(includeDeleted: bool = None, includeFlags: int = None, excludeFlags: int = None, customerID: list = None, includeGlobal: bool = None, offset: int = None, events: list = None, limit: int = 25,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """List notification rules (INTERNAL)

        :param bool includeDeleted: Include deleted rules
        :param int includeFlags: Limit result to rules with these flagbits set
        :param int excludeFlags: Limit result to rules with these flagbits unset
        :param list customerID: Limit result to rules for these customers
        :param bool includeGlobal: Include global rules
        :param int offset: Offset result
        :param list events: Limit result to rules for these events
        :param int limit: Limit result
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 493, "limit": 855, "responseCode": 200, "count": 157, "data": [{"id": 816, "revision": 776, "name": "Dale Vasquez", "matchRule": "Subject coach cover use.", "index": 625, "flags": 878, "actions": [{"changeMatching": "Far around item international.", "changeTypes": ["SMS"], "changeFormats": ["BRIEF"], "changeRoles": ["CC"], "sender": "Fund development on stand food.", "setFlags": 522, "unsetFlags": 502, "subjectTemplate": {"additionalProperties": "Everybody window service issue law."}, "bodyTemplate": {"additionalProperties": "Point note development word happy several sense candidate."}, "smsTemplate": {"additionalProperties": "Marriage determine military need produce doctor."}}], "additionalDestinations": [{"role": "REPORTER", "name": "Anna Maxwell", "destination": "Such able character partner.", "language": "ENGLISH", "flags": 929}], "timestamp": 1220646578, "lastUpdatedTimestamp": 563527190, "lastUpdatedByUser": {"id": 176, "customerID": 699, "userName": "nicholassexton", "name": "Crystal Baker"}, "events": ["Lay toward may feeling floor cost certain."], "globalCustomer": false}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "Sure kind cut central board Democrat whom.", "messageTemplate": "Stop break theory support work feel hair month.", "field": "Fall report partner on true book.", "parameter": {}, "timestamp": 460088021}], "currentPage": 932, "size": 19}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule".format()
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        if limit:
            body.update({"limit": limit})

        if includeDeleted:
            body.update({"includeDeleted": includeDeleted})

        if includeFlags:
            body.update({"includeFlags": includeFlags})

        if excludeFlags:
            body.update({"excludeFlags": excludeFlags})

        if customerID:
            body.update({"customerID": customerID})

        if includeGlobal:
            body.update({"includeGlobal": includeGlobal})

        if offset:
            body.update({"offset": offset})

        if events:
            body.update({"events": events})

        response = get(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def create(name: str = None, matchRule: str = None, customerID: int = None, setFlags: int = None, actions: list = None, additionalDestinations: list = None, events: list = None, index: int = 0,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Add notification rule (INTERNAL)

        :param str name: Notification rule name  => [\s\w\{\}\$\-\(\)\.\[\]"\'_/\\,\*\+\#:@!?;]*
        :param str matchRule:
        :param int customerID:
        :param int setFlags:
        :param list actions: Actions
        :param list additionalDestinations:
        :param list events:
        :param int index: index (default 0)
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 420, "limit": 543, "responseCode": 200, "count": 994, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Model personal behavior manage see.", "messageTemplate": "Product staff must nothing.", "field": "Western west heart board.", "parameter": {}, "timestamp": 184548869}], "currentPage": 542, "size": 768}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule".format()
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        if name:
            body.update({"name": name})

        if matchRule:
            body.update({"matchRule": matchRule})

        if customerID:
            body.update({"customerID": customerID})

        if index:
            body.update({"index": index})

        if setFlags:
            body.update({"setFlags": setFlags})

        if actions:
            body.update({"actions": actions})

        if additionalDestinations:
            body.update({"additionalDestinations": additionalDestinations})

        if events:
            body.update({"events": events})

        response = post(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def get_rule_by_id(id: int,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Fetch notification rule (INTERNAL)

        :param int id: ID of rule to fetch
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 225, "limit": 168, "responseCode": 200, "count": 755, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Day measure focus air when free imagine.", "messageTemplate": "Who north money every though.", "field": "Successful indeed serve respond increase.", "parameter": {}, "timestamp": 846158952}], "currentPage": 277, "size": 619}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}".format(id=id)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        response = get(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def update_rule(id: int, name: str = None, matchRule: str = None, index: int = None, setFlags: int = None, unsetFlags: int = None, actions: list = None, additionalDestinations: list = None, events: list = None,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Update notification rule (INTERNAL)

        :param int id: ID of rule to update
        :param str name: [\s\w\{\}\$\-\(\)\.\[\]"\'_/\\,\*\+\#:@!?;]*
        :param str matchRule:
        :param int index: index (default null)
        :param int setFlags:
        :param int unsetFlags:
        :param list actions:
        :param list additionalDestinations:
        :param list events:
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 373, "limit": 110, "responseCode": 200, "count": 214, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Across response entire mouth.", "messageTemplate": "Common reach individual them above.", "field": "Them benefit plant or best result game nor.", "parameter": {}, "timestamp": 1171381760}], "currentPage": 594, "size": 829}
        """
        from requests import put
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}".format(id=id)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        if name:
            body.update({"name": name})

        if matchRule:
            body.update({"matchRule": matchRule})

        if index:
            body.update({"index": index})

        if setFlags:
            body.update({"setFlags": setFlags})

        if unsetFlags:
            body.update({"unsetFlags": unsetFlags})

        if actions:
            body.update({"actions": actions})

        if additionalDestinations:
            body.update({"additionalDestinations": additionalDestinations})

        if events:
            body.update({"events": events})

        response = put(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def delete_rule(id: int,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Delete notification rule (INTERNAL)

        :param int id: ID of rule to delete
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 925, "limit": 32, "responseCode": 200, "count": 22, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Open task point certainly wait recently answer history.", "messageTemplate": "Color television then story short hour expert activity.", "field": "Sometimes campaign beat.", "parameter": {}, "timestamp": 523034430}], "currentPage": 547, "size": 793}
        """
        from requests import delete
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}".format(id=id)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        response = delete(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def add_action(id: int, index: int, changeMatching: str = None, changeTypes: list = None, changeFormats: list = None, changeRoles: list = None, sender: str = None, setFlags: int = None, unsetFlags: int = None, subjectTemplate: dict = None, bodyTemplate: dict = None, smsTemplate: dict = None,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Add notification action to rule (INTERNAL)

        :param int id: ID of rule to add this action to
        :param int index: Index to put this action at
        :param str changeMatching: [\s\w\{\}\$\-\(\)\.\[\]"\'_/\\,\*\+\#:@!?;]*
        :param list changeTypes:
        :param list changeFormats:
        :param list changeRoles:
        :param str sender:
        :param int setFlags:
        :param int unsetFlags:
        :param dict subjectTemplate: format:html
        :param dict bodyTemplate: format:html
        :param dict smsTemplate: [\s\w\{\}\$\-\(\)\.\[\]"\'_/\\,\*\+\#:@!?;]*
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 902, "limit": 347, "responseCode": 200, "count": 555, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Participant best defense crime run.", "messageTemplate": "Though night fear region eight event.", "field": "Report popular seek policy hand stock themselves.", "parameter": {}, "timestamp": 55564098}], "currentPage": 80, "size": 13}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}/actions/{index}".format(id=id, index=index)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        if changeMatching:
            body.update({"changeMatching": changeMatching})

        if changeTypes:
            body.update({"changeTypes": changeTypes})

        if changeFormats:
            body.update({"changeFormats": changeFormats})

        if changeRoles:
            body.update({"changeRoles": changeRoles})

        if sender:
            body.update({"sender": sender})

        if setFlags:
            body.update({"setFlags": setFlags})

        if unsetFlags:
            body.update({"unsetFlags": unsetFlags})

        if subjectTemplate:
            body.update({"subjectTemplate": subjectTemplate})

        if bodyTemplate:
            body.update({"bodyTemplate": bodyTemplate})

        if smsTemplate:
            body.update({"smsTemplate": smsTemplate})

        response = post(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def update_action(id: int, changeMatching: str = None, changeTypes: list = None, changeFormats: list = None, changeRoles: list = None, sender: str = None, setFlags: int = None, unsetFlags: int = None, subjectTemplate: dict = None, bodyTemplate: dict = None, smsTemplate: dict = None, index: int = 0,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Update notification rule action (INTERNAL)

        :param int id: ID of rule to update
        :param str changeMatching: [\s\w\{\}\$\-\(\)\.\[\]"\'_/\\,\*\+\#:@!?;]*
        :param list changeTypes:
        :param list changeFormats:
        :param list changeRoles:
        :param str sender:
        :param int setFlags:
        :param int unsetFlags:
        :param dict subjectTemplate: format:html
        :param dict bodyTemplate: format:html
        :param dict smsTemplate: [\s\w\{\}\$\-\(\)\.\[\]"\'_/\\,\*\+\#:@!?;]*
        :param int index: Index of action to update
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 621, "limit": 374, "responseCode": 200, "count": 982, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Animal specific create management.", "messageTemplate": "Hundred free rest bit impact class black organization.", "field": "Throw act large simply rate your.", "parameter": {}, "timestamp": 1204165275}], "currentPage": 286, "size": 480}
        """
        from requests import put
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}/actions/{index}".format(id=id, index=index)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        if changeMatching:
            body.update({"changeMatching": changeMatching})

        if changeTypes:
            body.update({"changeTypes": changeTypes})

        if changeFormats:
            body.update({"changeFormats": changeFormats})

        if changeRoles:
            body.update({"changeRoles": changeRoles})

        if sender:
            body.update({"sender": sender})

        if setFlags:
            body.update({"setFlags": setFlags})

        if unsetFlags:
            body.update({"unsetFlags": unsetFlags})

        if subjectTemplate:
            body.update({"subjectTemplate": subjectTemplate})

        if bodyTemplate:
            body.update({"bodyTemplate": bodyTemplate})

        if smsTemplate:
            body.update({"smsTemplate": smsTemplate})

        response = put(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def delete_action(id: int, index: int,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Delete action from notification rule (INTERNAL)

        :param int id: ID of rule
        :param int index: Index of action to delete
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 206, "limit": 467, "responseCode": 200, "count": 126, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Measure year last special kid model.", "messageTemplate": "Data continue reality western kid.", "field": "Street shoulder so table.", "parameter": {}, "timestamp": 586341039}], "currentPage": 45, "size": 469}
        """
        from requests import delete
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}/actions/{index}".format(id=id, index=index)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        response = delete(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def add_destination(id: int, format: str = None, type: str = None, role: str = None, name: str = None, destination: str = None, language: str = None, flags: int = None,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Add destination to notification rule (INTERNAL)

        :param int id: ID of rule to add this destination to
        :param str format:
        :param str type:
        :param str role:
        :param str name: [\s\w\{\}\$\-\(\)\.\[\]"\'_/\\,\*\+\#:@!?;]*
        :param str destination:
        :param str language:
        :param int flags:
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 944, "limit": 584, "responseCode": 200, "count": 138, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Into policy share act foreign region agree.", "messageTemplate": "For happy market campaign coach.", "field": "Interesting real decide late toward with I.", "parameter": {}, "timestamp": 1190684668}], "currentPage": 10, "size": 411}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}/destinations".format(id=id)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        if format:
            body.update({"format": format})

        if type:
            body.update({"type": type})

        if role:
            body.update({"role": role})

        if name:
            body.update({"name": name})

        if destination:
            body.update({"destination": destination})

        if language:
            body.update({"language": language})

        if flags:
            body.update({"flags": flags})

        response = post(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def update_destination(id: int, index: int, format: str = None, type: str = None, role: str = None, name: str = None, destination: str = None, language: str = None, flags: int = None,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Update notification rule destination (INTERNAL)

        :param int id: ID of rule to update
        :param int index: Index of destination to update
        :param str format:
        :param str type:
        :param str role:
        :param str name: [\s\w\{\}\$\-\(\)\.\[\]"\'_/\\,\*\+\#:@!?;]*
        :param str destination:
        :param str language:
        :param int flags:
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 211, "limit": 135, "responseCode": 200, "count": 673, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Nor sometimes seek movement ground attorney.", "messageTemplate": "Son live course drug road box like.", "field": "Start room today soon bag.", "parameter": {}, "timestamp": 1098214541}], "currentPage": 977, "size": 219}
        """
        from requests import put
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}/destinations/{index}".format(id=id, index=index)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        if format:
            body.update({"format": format})

        if type:
            body.update({"type": type})

        if role:
            body.update({"role": role})

        if name:
            body.update({"name": name})

        if destination:
            body.update({"destination": destination})

        if language:
            body.update({"language": language})

        if flags:
            body.update({"flags": flags})

        response = put(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def delete_destination(id: int, index: int,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Delete destination from notification rule (INTERNAL)

        :param int id: ID of rule
        :param int index: Index of destination to delete
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 95, "limit": 851, "responseCode": 200, "count": 116, "metaData": {"additionalProperties": {}}, "messages": [{"message": "At agent unit company suggest nature.", "messageTemplate": "Hotel its language question child civil while.", "field": "Light again voice walk.", "parameter": {}, "timestamp": 1431643938}], "currentPage": 457, "size": 912}
        """
        from requests import delete
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}/destinations/{index}".format(id=id, index=index)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        response = delete(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def duplicate_rule(id: int,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Duplicate this notification rule (INTERNAL)

        :param int id: ID of rule to duplicate
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 515, "limit": 493, "responseCode": 200, "count": 931, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Human wide owner hold claim tough.", "messageTemplate": "Choose follow manager several.", "field": "Sister both type south door travel hotel or.", "parameter": {}, "timestamp": 1329019540}], "currentPage": 663, "size": 38}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}/duplicate".format(id=id)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        response = post(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def revisions(id: int, offset: int = None, limit: int = 25,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """List revisions of notification rule (INTERNAL)

        :param int id: ID of rule to fetch
        :param int offset: Offset result
        :param int limit: Limit result
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 482, "limit": 708, "responseCode": 200, "count": 897, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Stay surface serious term.", "messageTemplate": "Maybe majority finally pretty environment.", "field": "Mean relate course thousand good.", "parameter": {}, "timestamp": 99403013}], "currentPage": 485, "size": 415}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{id}/revisions".format(id=id)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        if limit:
            body.update({"limit": limit})

        if offset:
            body.update({"offset": offset})

        response = get(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response

    @register_command(extending=('system','notification','v1','rule'))
    def get_rule_by_name(name: str,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Fetch notification rule (INTERNAL)

        :param str name: Name of rule to fetch
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 731, "limit": 126, "responseCode": 200, "count": 187, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Require certainly bad rather.", "messageTemplate": "Call artist attention local.", "field": "Single authority future might beat in.", "parameter": {}, "timestamp": 1056529161}], "currentPage": 662, "size": 484}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/notification/v1/rule/{name}".format(name=name)
        headers = {
            'Content-Type': 'application/json',
            'User-Agent': 'ArgusToolbelt/1.0'
        }

        if apiKey:
            headers["Argus-API-Key"] = apiKey
        elif authentication and isinstance(authentication, dict):
            headers.update(authentication)
        elif callable(authentication):
            headers.update(authentication(url))

        body = {}

        response = get(url, json=body if body else None, verify=verify, headers=headers)

        errors = []
        if response.status_code == 401:
            raise http.AuthenticationFailedException(response)
        elif response.status_code == 403:
            raise http.AccessDeniedException(response)
        elif response.status_code == 412:
            raise http.ValidationErrorException(response)
        elif response.status_code == 404:
            raise http.ObjectNotFoundException(response)

        return response.json() if json else response