# Source code for api.system.components.code.v1.profile

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

    @register_command(extending=('system','components','code','v1','profile'))
    def list(orderDesc: bool = None, limit: int = 25, offset: int = 0, orderBy: str = 'name',json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """List code profiles (INTERNAL)

        :param bool orderDesc: Sort results descending
        :param int limit: Limit results
        :param int offset: Offset results
        :param str orderBy: Sort results
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 434, "limit": 37, "responseCode": 200, "count": 33, "data": [{"id": 517, "name": "Bradley Lee", "flags": 975, "created": 411, "createdByUser": {"id": 903, "customerID": 562, "userName": "kathryn65", "name": "Juan Clark"}, "lastUpdatedTimestamp": 1099669702, "lastUpdatedByUser": {"id": 351, "customerID": 951, "userName": "shunt", "name": "Amanda Pennington"}, "artifacts": [{"id": "Growth visit approach whatever.", "groupID": "Peace wear use fish.", "artifactID": "Spend similar serve tell mother.", "version": "Particularly total than reduce.", "flags": 308, "status": "DELETED", "createdTimestamp": 1408923449, "lastUpdatedTimestamp": 284886820, "length": 996, "data": "Full purpose remain rich."}], "deleted": true, "finalized": false}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "Serve develop yes yard issue.", "messageTemplate": "Dog degree share want.", "field": "Little whole always why point local.", "parameter": {}, "timestamp": 1397759996}], "currentPage": 391, "size": 247}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile".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 orderBy:
            body.update({"orderBy": orderBy})

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

        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','components','code','v1','profile'))
    def create(name: str = None, artifactsToAttach: list = None, finalize: bool = 'False',json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Add new code profile (INTERNAL)

        :param str name: [a-zA-Z0-9_\-\.]*
        :param list artifactsToAttach:
        :param bool finalize:
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 998, "limit": 362, "responseCode": 200, "count": 835, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Partner system family culture.", "messageTemplate": "Accept level opportunity own community culture.", "field": "Meet even dog west factor.", "parameter": {}, "timestamp": 799169130}], "currentPage": 907, "size": 180}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile".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 artifactsToAttach:
            body.update({"artifactsToAttach": artifactsToAttach})

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

        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','components','code','v1','profile'))
    def search(limit: int = None, offset: int = None, includeFlags: int = None, excludeFlags: int = None, subCriteria: list = None, searchString: str = None, usingArtifact: list = None, startTimestamp: int = None, endTimestamp: int = None, sortBy: list = None, includeDeleted: bool = 'False', exclude: bool = 'False', required: bool = 'False', includeArtifacts: bool = 'False', includeCreatedTimestamp: bool = 'False', includeLastUpdatedTimestamp: bool = 'False',json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Search code profiles (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 str searchString:
        :param list usingArtifact:
        :param int startTimestamp:
        :param int endTimestamp:
        :param list sortBy: List of properties to sort by (prefix with "-" to sort descending).
        :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).
        :param bool includeArtifacts:
        :param bool includeCreatedTimestamp:
        :param bool includeLastUpdatedTimestamp:
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :returns: {"offset": 518, "limit": 903, "responseCode": 200, "count": 264, "data": [{"id": 272, "name": "Erica Mercer", "flags": 576, "created": 42, "createdByUser": {"id": 821, "customerID": 514, "userName": "kbrown", "name": "Virginia Martin"}, "lastUpdatedTimestamp": 926834382, "lastUpdatedByUser": {"id": 824, "customerID": 890, "userName": "edwardwilson", "name": "Jason Gutierrez"}, "artifacts": [{"id": "Through remember teach always clearly day.", "groupID": "Though college others benefit.", "artifactID": "Weight protect oil clearly candidate.", "version": "Theory laugh individual table.", "flags": 144, "status": "ACTIVE", "createdTimestamp": 279321359, "lastUpdatedTimestamp": 180340114, "length": 744, "data": "Last friend ready environment item."}], "deleted": true, "finalized": true}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "Become play card nice.", "messageTemplate": "Our employee natural green score free who.", "field": "Top cause pay just value.", "parameter": {}, "timestamp": 291510201}], "currentPage": 19, "size": 724}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/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 searchString:
            body.update({"searchString": searchString})

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

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

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

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

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

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

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

        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','components','code','v1','profile'))
    def get_by_id(id: int,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Get code profile by ID (INTERNAL)

        :param int id: ID of profile to fetch
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 600, "limit": 726, "responseCode": 200, "count": 487, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Over visit leader better.", "messageTemplate": "Kid on far room condition add either.", "field": "Sense pretty learn indicate.", "parameter": {}, "timestamp": 435201527}], "currentPage": 591, "size": 799}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{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','components','code','v1','profile'))
    def update(id: int, name: str = None, finalized: bool = 'False', useForUnknown: bool = 'False', setAsDefault: bool = 'False',json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Update code profile (INTERNAL)

        :param int id: ID of profile to update
        :param str name: [a-zA-Z0-9_\-\.]*
        :param bool finalized:
        :param bool useForUnknown:
        :param bool setAsDefault:
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 492, "limit": 518, "responseCode": 200, "count": 659, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Knowledge can member evidence dark small government.", "messageTemplate": "Ever staff protect pick sister.", "field": "Until party fire notice.", "parameter": {}, "timestamp": 773109939}], "currentPage": 145, "size": 529}
        """
        from requests import put
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{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 finalized:
            body.update({"finalized": finalized})

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

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

        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','components','code','v1','profile'))
    def delete(id: int,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Mark code profile as deleted (INTERNAL)

        :param int id: ID of profile to delete
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 901, "limit": 813, "responseCode": 200, "count": 458, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Medical sign save for.", "messageTemplate": "Performance human protect dinner.", "field": "Probably clear those commercial analysis according.", "parameter": {}, "timestamp": 369434938}], "currentPage": 716, "size": 433}
        """
        from requests import delete
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{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','components','code','v1','profile'))
    def duplicate(id: int, name: str,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Duplicate existing code profile (INTERNAL)

        :param int id: ID of profile to duplicate
        :param str name: Name of new profile
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 348, "limit": 205, "responseCode": 200, "count": 979, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Move national develop live.", "messageTemplate": "Thing kid both performance eat would.", "field": "Top pretty particular difficult responsibility hold.", "parameter": {}, "timestamp": 789341290}], "currentPage": 295, "size": 657}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{id}/duplicate/{name}".format(id=id, 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 = 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','components','code','v1','profile'))
    def get_by_name(name: str,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Get code profile by name (INTERNAL)

        :param str name: Name of profile to fetch
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 717, "limit": 713, "responseCode": 200, "count": 846, "data": [{"id": 614, "name": "Kelli Lutz", "flags": 541, "created": 485, "createdByUser": {"id": 292, "customerID": 822, "userName": "jonathan10", "name": "Terri Fowler"}, "lastUpdatedTimestamp": 688596507, "lastUpdatedByUser": {"id": 847, "customerID": 749, "userName": "ygarrett", "name": "Tracie Terrell"}, "artifacts": [{"id": "Enter rich successful very town they.", "groupID": "Back someone product heavy left allow audience.", "artifactID": "Where art reason talk wide group nice crime.", "version": "Explain establish box laugh rule hair.", "flags": 919, "status": "UNUSED", "createdTimestamp": 725965946, "lastUpdatedTimestamp": 1134582673, "length": 801, "data": "Score trip rise then thank debate."}], "deleted": true, "finalized": false}], "metaData": {"additionalProperties": {}}, "messages": [{"message": "Large fact possible person bag.", "messageTemplate": "Thought camera century program along although movement.", "field": "Word central ten whether off.", "parameter": {}, "timestamp": 644469347}], "currentPage": 121, "size": 317}
        """
        from requests import get
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{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

    @register_command(extending=('system','components','code','v1','profile'))
    def attach_detach(profileID: int, artifactsToAttach: list = None, artifactsToDetach: list = None,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Attach and detach artifact to given profile (INTERNAL)

        :param int profileID: ID of profile to detach from
        :param list artifactsToAttach:
        :param list artifactsToDetach:
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 291, "limit": 262, "responseCode": 200, "count": 673, "metaData": {"additionalProperties": {}}, "messages": [{"message": "End or mission bring read exactly wide join.", "messageTemplate": "Happy clear manage.", "field": "Organization cause five student huge share positive.", "parameter": {}, "timestamp": 1253654022}], "currentPage": 401, "size": 990}
        """
        from requests import put
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{profileID}/artifacts".format(profileID=profileID)
        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 artifactsToAttach:
            body.update({"artifactsToAttach": artifactsToAttach})

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

        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','components','code','v1','profile'))
    def attach(profileID: int, artifactID: list,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Attach artifact to profile (INTERNAL)

        :param int profileID: ID of profile to attach to
        :param list artifactID: Hash ID of artifacts to attach
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 351, "limit": 324, "responseCode": 200, "count": 883, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Establish new lot employee serious life agent.", "messageTemplate": "Pretty agreement attorney sell organization member.", "field": "Other according well science listen suffer skin.", "parameter": {}, "timestamp": 321484118}], "currentPage": 750, "size": 426}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{profileID}/artifacts/{artifactID}".format(profileID=profileID, artifactID=artifactID)
        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','components','code','v1','profile'))
    def detach(profileID: int, artifactID: str,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Detach artifact to profile (INTERNAL)

        :param int profileID: ID of profile to detach from
        :param str artifactID: Hash ID of artifact to detach
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 696, "limit": 469, "responseCode": 200, "count": 179, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Us human risk special seem.", "messageTemplate": "Even near rise blue.", "field": "Glass rich open sport citizen miss.", "parameter": {}, "timestamp": 600496866}], "currentPage": 814, "size": 122}
        """
        from requests import delete
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{profileID}/artifacts/{artifactID}".format(profileID=profileID, artifactID=artifactID)
        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','components','code','v1','profile'))
    def detach_by_artifact_by_g_a(profileName: str, groupID: str, artifactID: str,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Detach artifact from profile by profile name and artifact GAV (INTERNAL)
    Will detach all artifacts with given group ID artifact ID, regardless of version

        :param str profileName: Name of profile to detach from
        :param str groupID: GroupID of artifact to detach
        :param str artifactID: ArtifactID of artifact to detach
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 308, "limit": 449, "responseCode": 200, "count": 787, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Seven almost trial daughter answer short.", "messageTemplate": "Message offer apply alone rock strong.", "field": "Everyone still property news analysis.", "parameter": {}, "timestamp": 1398004550}], "currentPage": 719, "size": 13}
        """
        from requests import delete
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{profileName}/artifacts/{groupID}/{artifactID}".format(profileName=profileName, groupID=groupID, artifactID=artifactID)
        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','components','code','v1','profile'))
    def attach_by_name(profileName: str, groupID: str, artifactID: str, version: str,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Attach artifact to profile by profile name and artifact GAV (INTERNAL)

        :param str profileName: Name of profile to attach to
        :param str groupID: GroupID of artifact to attach
        :param str artifactID: ArtifactID of artifact to attach
        :param str version: Version of artifact to attach
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 633, "limit": 874, "responseCode": 200, "count": 192, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Even name within during.", "messageTemplate": "Exactly want cultural more face reduce boy.", "field": "Should enter again recognize against.", "parameter": {}, "timestamp": 1086345610}], "currentPage": 811, "size": 923}
        """
        from requests import post
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{profileName}/artifacts/{groupID}/{artifactID}/{version}".format(profileName=profileName, groupID=groupID, artifactID=artifactID, version=version)
        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','components','code','v1','profile'))
    def detach_by_name(profileName: str, groupID: str, artifactID: str, version: str,json: bool = True, verify: bool = True, apiKey: str = "", authentication: dict = {}) -> dict:
        """Detach artifact from profile by profile name and artifact GAV (INTERNAL)

        :param str profileName: Name of profile to detach from
        :param str groupID: GroupID of artifact to detach
        :param str artifactID: ArtifactID of artifact to detach
        :param str version: Version of artifact to detach
        :raises AuthenticationFailedException: on 401
        :raises ValidationErrorException: on 412
        :raises AccessDeniedException: on 403
        :raises ObjectNotFoundException: on 404
        :returns: {"offset": 798, "limit": 899, "responseCode": 200, "count": 251, "metaData": {"additionalProperties": {}}, "messages": [{"message": "Trouble mind this direction.", "messageTemplate": "Say prevent time voice hit story.", "field": "Republican skill while too.", "parameter": {}, "timestamp": 971012118}], "currentPage": 643, "size": 212}
        """
        from requests import delete
        from argus_api.exceptions import http

        url = "https://osl-argus-trunk-web1.mnemonic.no/web/api/system/components/code/v1/profile/{profileName}/artifacts/{groupID}/{artifactID}/{version}".format(profileName=profileName, groupID=groupID, artifactID=artifactID, version=version)
        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