UNPKG

@gillesvilleneuve/crowdstrike-falcon

Version:

CrowdStrike Falcon integration for Active Pieces with incident management, host isolation, and real-time response capabilities

64 lines (55 loc) 1.93 kB
import { createAction, Property } from '@activepieces/pieces-framework'; import { makeAuthenticatedApiCall, formatErrorResponse, validateRequiredParams } from '../../common/utils'; import { API_ENDPOINTS } from '../../common/constants'; /** * Action to initialize a Real-Time Response (RTR) session in CrowdStrike */ export const initializeRtrSession = createAction({ name: 'initialize_rtr_session', displayName: 'Initialize RTR Session', description: 'Initialize a new Real-Time Response session with a host', props: { device_id: Property.ShortText({ displayName: 'Device ID', description: 'CrowdStrike device ID to establish an RTR session with', required: true, }), queue_offline: Property.Checkbox({ displayName: 'Queue Offline', description: 'Queue command for offline device', required: false, defaultValue: false, }), }, async run(context) { try { const { auth, propsValue } = context; // Validate required parameters validateRequiredParams(propsValue, ['device_id']); // Make API call to initialize RTR session const response = await makeAuthenticatedApiCall( auth, API_ENDPOINTS.RTR_SESSION_INIT, 'POST', { device_id: propsValue.device_id, queue_offline: propsValue.queue_offline || false, } ); // Check if session was created successfully if (!response.resources || response.resources.length === 0) { throw new Error('Failed to initialize RTR session'); } const session = response.resources[0]; return { success: true, session_id: session.session_id, device_id: propsValue.device_id, created_at: session.created_at, session_details: session, }; } catch (error) { return formatErrorResponse(error); } }, });