<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_archives(self, offset=None, count=None, session_id=None):
 """Returns an ArchiveList, which is an array of archives that are completed and in-progress, for your API key. :param int: offset Optional. The index offset of the first archive. 0 is offset of the most recently started archive. 1 is the offset of the archive that started prior to the most recent archive. If you do not specify an offset, 0 is used. :param int: count Optional. The number of archives to be returned. The maximum number of archives returned is 1000. :param string: session_id Optional. Used to list archives for a specific session ID. :rtype: An ArchiveList object, which is an array of Archive objects. """

        params = {}
        if offset is not None:
            params['offset'] = offset
        if count is not None:
            params['count'] = count
        if session_id is not None:
            params['sessionId'] = session_id

        endpoint = self.endpoints.archive_url() + "?" + urlencode(params)

        response = requests.get(
            endpoint, headers=self.json_headers(), proxies=self.proxies, timeout=self.timeout
        )

        if response.status_code < 300:
            return ArchiveList(self, response.json())
        elif response.status_code == 403:
            raise AuthError()
        elif response.status_code == 404:
            raise NotFoundError("Archive not found")
        else:
            raise RequestError("An unexpected error occurred", response.status_code)