# Source code for api.reputation.v1.calculated.calculated_domain

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

    @register_command(extending=('reputation','v1','calculated','domain'))
    def list_domain_reputation(fromDomain: str = None, afterDomain: str = None, sourceID: int = None, minimumValue: int = None, limit: int = 25, offset: int = 0,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """List up calculated domain reputation values (INTERNAL)

        :param str fromDomain: List observed domains after this domain, including (sorted by reverse domain)
        :param str afterDomain: List observed domains after this domain, excluding (sorted by reverse domain)
        :param int sourceID: Limit to domains observed in this source
        :param int minimumValue: Limit to domains which have a reputation score at lease this large
        :param int limit: Limit output
        :param int offset: Offset result
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 383, "limit": 393, "responseCode": 200, "count": 894, "data": [{"override": false, "reason": "Believe explain table man strong offer.", "value": 796}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "Culture yeah teach behind pick million.", "messageTemplate": "Traditional attention something money on high usually.", "field": "Expect fire provide training.", "parameter": {}, "timestamp": 521124238}], "currentPage": 432, "size": 821}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/reputation/v1/calculated/domain".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 offset:
            body.update({"offset": offset})

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

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

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

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

        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=('reputation','v1','calculated','domain'))
    def find_domain_reputation(limit: int = None, offset: int = None, includeFlags: int = None, excludeFlags: int = None, subCriteria: list = None, minimumValue: int = None, sourceID: list = None, fromDomainName: str = None, afterDomainName: str = None, domainNames: list = None, includeDeleted: bool = 'False', exclude: bool = 'False', required: bool = 'False',json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Search for calculated domain reputation values (INTERNAL)

        :param int limit: Set this value to set max number of results. By default, no restriction on result set size.
        :param int offset: Set this value to skip the first (offset) objects. By default, return result from first object.
        :param int includeFlags: Only include objects which have includeFlags set.
        :param int excludeFlags: Exclude objects which have excludeFlags set.
        :param list subCriteria:
        :param int minimumValue:
        :param list sourceID:
        :param str fromDomainName:
        :param str afterDomainName:
        :param list domainNames: Full Qualified Domain Names
        :param bool includeDeleted: Set to true to include deleted objects. By default, exclude deleted objects.
        :param bool exclude: Only relevant for subcriteria. If set to true, objects matching this subcriteria object will be excluded.
        :param bool required: Only relevant for subcriteria. If set to true, objects matching this subcriteria are required (AND-ed together with parent criteria).
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 196, "limit": 308, "responseCode": 200, "count": 679, "data": [{"override": false, "reason": "Model science as professor prepare daughter send bad.", "value": 938}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "What speak sound least test near knowledge.", "messageTemplate": "Help according cultural song.", "field": "Hold green yet standard.", "parameter": {}, "timestamp": 1495982312}], "currentPage": 183, "size": 812}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/reputation/v1/calculated/domain/search".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 offset:
            body.update({"offset": offset})

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

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

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

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

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

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

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

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

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

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

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

        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=('reputation','v1','calculated','domain'))
    def calculate_reputation_for_domain(fqdn: str,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Look up the calculated reputation value for the given Domain (INTERNAL)

        :param str fqdn: Domain to look up
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 437, "limit": 789, "responseCode": 200, "count": 433, "data": [{"override": true, "reason": "Institution college everybody month worry character debate commercial.", "value": 48}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "Total movement whole land fear seven campaign.", "messageTemplate": "Ten I type billion.", "field": "Personal hour yard defense analysis.", "parameter": {}, "timestamp": 785964758}], "currentPage": 487, "size": 263}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/reputation/v1/calculated/domain/{fqdn}".format(fqdn=fqdn)
        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=('reputation','v1','calculated','domain'))
    def list_address_reputation(fromAddress: str = None, afterAddress: str = None, sourceID: int = None, minimumValue: int = None, limit: int = 25, offset: int = 0,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """List up calculated IP reputation values (INTERNAL)

        :param str fromAddress: List observed domains after this domain, including (sorted by reverse domain)
        :param str afterAddress: List observed domains after this domain, excluding (sorted by reverse domain)
        :param int sourceID: Limit to domains observed in this source
        :param int minimumValue: Limit to domains which have a reputation score at lease this large
        :param int limit: Limit output
        :param int offset: Offset result
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 621, "limit": 30, "responseCode": 200, "count": 175, "data": [{"override": false, "reason": "Lawyer share positive time law southern.", "value": 347}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "Ever fear threat government place wait most.", "messageTemplate": "Drug entire spend reality travel line.", "field": "Almost kid chair Mrs lawyer while close.", "parameter": {}, "timestamp": 1300657304}], "currentPage": 903, "size": 692}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/reputation/v1/calculated/ip".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 offset:
            body.update({"offset": offset})

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

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

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

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

        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=('reputation','v1','calculated','domain'))
    def find_address_reputation(limit: int = None, offset: int = None, includeFlags: int = None, excludeFlags: int = None, subCriteria: list = None, minimumValue: int = None, sourceID: list = None, fromAddress: str = None, afterAddress: str = None, addresses: list = None, includeDeleted: bool = 'False', exclude: bool = 'False', required: bool = 'False',json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Search for calculated IP reputation values (INTERNAL)

        :param int limit: Set this value to set max number of results. By default, no restriction on result set size.
        :param int offset: Set this value to skip the first (offset) objects. By default, return result from first object.
        :param int includeFlags: Only include objects which have includeFlags set.
        :param int excludeFlags: Exclude objects which have excludeFlags set.
        :param list subCriteria:
        :param int minimumValue:
        :param list sourceID:
        :param str fromAddress:
        :param str afterAddress:
        :param list addresses: List of IP addresses
        :param bool includeDeleted: Set to true to include deleted objects. By default, exclude deleted objects.
        :param bool exclude: Only relevant for subcriteria. If set to true, objects matching this subcriteria object will be excluded.
        :param bool required: Only relevant for subcriteria. If set to true, objects matching this subcriteria are required (AND-ed together with parent criteria).
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 206, "limit": 919, "responseCode": 200, "count": 979, "data": [{"override": true, "reason": "Audience none actually through similar he improve office.", "value": 793}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "Member fast nearly modern dark site.", "messageTemplate": "Analysis policy month rest reason deep.", "field": "Raise service foot.", "parameter": {}, "timestamp": 814841100}], "currentPage": 245, "size": 682}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/reputation/v1/calculated/ip/search".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 offset:
            body.update({"offset": offset})

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

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

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

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

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

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

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

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

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

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

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

        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=('reputation','v1','calculated','domain'))
    def calculate_reputation_for_i_p(ip: str,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Look up the calculated reputation value for the given IP (INTERNAL)

        :param str ip: IP address to look up
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 436, "limit": 280, "responseCode": 200, "count": 829, "data": [{"override": true, "reason": "Bit dog door choose no force central church.", "value": 533}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "Detail TV final to easy education talk party.", "messageTemplate": "Culture action sport official like structure him.", "field": "Conference deep tree painting during appear authority mission.", "parameter": {}, "timestamp": 1366085168}], "currentPage": 795, "size": 44}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/reputation/v1/calculated/ip/{ip}".format(ip=ip)
        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