import demistomock as demisto from CommonServerPython import * from CommonServerUserPython import * API_ENDPOINT_URL = "/public_api/v1/audits/management_logs" def main(): args = demisto.args() list_name_log_count = args.get("AuditLogCountList") instance_name = args.get("CoreRestInstanceName") splunk_instance_name = args.get("SplunkInstanceName") # Get offset last_fetched_index = demisto.executeCommand("getList", {"listName": list_name_log_count})[0]["Contents"] last_fetched_index = int(last_fetched_index) if last_fetched_index else 0 body = { "request_data": { "search_from": last_fetched_index + 1, "search_to": last_fetched_index + 100, "sort": {"field": "timestamp", "keyword": "asc"}, } } # Get audit logs all_audit_logs = demisto.dt( demisto.executeCommand("core-api-post", {"uri": API_ENDPOINT_URL, "body": body, "using": instance_name}), "Contents.response.reply.data", ) total_logs = 0 if all_audit_logs: # Get number of logs pulled total_logs = len(all_audit_logs) # Submit each log as an even to HEC for log in all_audit_logs: submit_event = demisto.executeCommand("splunk-submit-event-hec", {"event": log, "using": splunk_instance_name}) if "sent successfully" not in submit_event: return_error(submit_event[0]["Contents"]) sys.exit(1) else: return_results("No Logs Found") # Update the new offset demisto.executeCommand("setList", {"listName": list_name_log_count, "listData": last_fetched_index + total_logs}) if __name__ in ("__main__", "__builtin__", "builtins"): main()