Phase 1: Planning

Planning is the most important phase. A well-researched plan prevents rework during building. Expect to spend 30-40% of total project time here.


Step 1: Research the vendor API

Read the vendor’s API documentation end to end before writing any code. You are looking for:

Authentication method

Document the exact auth mechanism and note any header construction requirements.

Available endpoints

List every endpoint you plan to use. For each one, record:

Pagination model

This is critical — get it wrong and you will either miss events or duplicate them.

Event types and fields

For each event type the API returns:

Rate limits and quotas


Step 2: Map event types to rule families

Create a table mapping each vendor event type to a Wazuh rule family:

Vendor event type Rule family Base severity MITRE tactic (if applicable)
signin_attempt Authentication 3-7 (by outcome) Initial Access
item_usage Data Access 3-5 Collection
audit_action Admin Activity 3-8 (by action)
error Integration Health 8-10

This mapping drives rule design in Phase 2. Getting it right now prevents rule rewrites later.

Severity guidelines

Wazuh level Meaning Use for
2-3 Low / informational Successful routine operations (logins, reads)
4-5 Medium / notable Unusual but not necessarily malicious activity
6-7 High / suspicious Failed auth, policy violations, anomalous access
8-10 Critical / actionable Confirmed threats, integration errors, blocked attacks
12+ Emergency Reserved for correlation rules or extremely high-confidence threats

Step 3: Reserve rule ID range

Every integration needs a dedicated, non-overlapping rule ID range. Wazuh’s built-in rules use IDs below 100000. Custom integrations use 100000+.

Convention from our integrations:

Reserve a 100-ID block for your integration. Within that block:

Document your reservation in the integration’s rules reference guide.


Step 4: Choose the namespace prefix

Pick a 2-4 character prefix for the vendor namespace. Requirements:

Examples from our integrations:

Avoid generic prefixes like api, evt, src, or int — they will collide.


Step 5: Design the module split

Based on the API surface you documented in Step 1, decide how many domain modules you need:

Name each module: {vendor}_{surface}.py (e.g., proofpoint_siem.py, proofpoint_people.py)


Step 6: Document the plan

Before writing code, create a brief plan document (even just notes) covering:

  1. Vendor API: endpoints, auth method, pagination model
  2. Event types: what you will ingest, mapped to rule families
  3. Rule ID range: your reserved block
  4. Namespace prefix: your chosen prefix
  5. Module split: which modules and what each covers
  6. Rate limit budget: requests per interval, headroom calculation
  7. Known constraints: API quirks, data retention limits, known issues

This document becomes the input for Phase 2 and is invaluable context when prompting an AI assistant.


Planning checklist