> ## Documentation Index
> Fetch the complete documentation index at: https://docs.osmedeus.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Event Logs

> Query execution event logs with filtering

# Event Logs

## List Event Logs

Get a paginated list of event logs with optional filtering.

**List all event logs:**

```bash theme={null}
curl http://localhost:8002/osm/api/event-logs \
  -H "Authorization: Bearer $TOKEN"
```

**With pagination:**

```bash theme={null}
curl "http://localhost:8002/osm/api/event-logs?offset=0&limit=50" \
  -H "Authorization: Bearer $TOKEN"
```

**Filter by workspace:**

```bash theme={null}
curl "http://localhost:8002/osm/api/event-logs?workspace=example.com" \
  -H "Authorization: Bearer $TOKEN"
```

**Filter by topic:**

```bash theme={null}
curl "http://localhost:8002/osm/api/event-logs?topic=run.completed" \
  -H "Authorization: Bearer $TOKEN"
```

**Filter by run ID:**

```bash theme={null}
curl "http://localhost:8002/osm/api/event-logs?run_id=abc12345" \
  -H "Authorization: Bearer $TOKEN"
```

**Multiple filters:**

```bash theme={null}
curl "http://localhost:8002/osm/api/event-logs?workspace=example.com&processed=false&limit=100" \
  -H "Authorization: Bearer $TOKEN"
```

**Query Parameters:**

| Parameter       | Type   | Description                                                   |
| --------------- | ------ | ------------------------------------------------------------- |
| `topic`         | string | Filter by event topic (e.g., "run.started", "run.completed")  |
| `name`          | string | Filter by event name                                          |
| `source`        | string | Filter by event source (e.g., "executor", "scheduler", "api") |
| `workspace`     | string | Filter by workspace name                                      |
| `run_id`        | string | Filter by run ID                                              |
| `workflow_name` | string | Filter by workflow name                                       |
| `processed`     | bool   | Filter by processed status ("true" or "false")                |
| `offset`        | int    | Pagination offset (default: 0)                                |
| `limit`         | int    | Maximum records to return (default: 20, max: 10000)           |

**Response:**

```json theme={null}
{
  "data": [
    {
      "id": 1,
      "topic": "run.completed",
      "event_id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "subdomain-enum-completed",
      "source": "executor",
      "data_type": "scan",
      "data": "{\"scan_id\":\"abc12345\",\"target\":\"example.com\",\"duration_ms\":3600000,\"assets_found\":150,\"steps_completed\":10}",
      "workspace": "example.com",
      "run_id": "abc12345",
      "workflow_name": "subdomain-enum",
      "processed": true,
      "processed_at": "2025-01-15T10:30:00Z",
      "error": "",
      "created_at": "2025-01-15T09:30:00Z"
    },
    {
      "id": 2,
      "topic": "run.started",
      "event_id": "660e8400-e29b-41d4-a716-446655440001",
      "name": "port-scan-started",
      "source": "api",
      "data_type": "scan",
      "data": "{\"scan_id\":\"def67890\",\"target\":\"test.com\",\"params\":{\"ports\":\"top-1000\"}}",
      "workspace": "test.com",
      "run_id": "def67890",
      "workflow_name": "port-scan",
      "processed": true,
      "processed_at": "2025-01-15T11:00:00Z",
      "error": "",
      "created_at": "2025-01-15T11:00:00Z"
    },
    {
      "id": 3,
      "topic": "asset.discovered",
      "event_id": "770e8400-e29b-41d4-a716-446655440002",
      "name": "httpx-asset-found",
      "source": "executor",
      "data_type": "asset",
      "data": "{\"url\":\"https://api.example.com\",\"status_code\":200,\"title\":\"API Documentation\",\"tech\":[\"nginx\",\"nodejs\"]}",
      "workspace": "example.com",
      "run_id": "abc12345",
      "workflow_name": "subdomain-enum",
      "processed": true,
      "processed_at": "2025-01-15T10:15:00Z",
      "error": "",
      "created_at": "2025-01-15T10:15:00Z"
    },
    {
      "id": 4,
      "topic": "schedule.triggered",
      "event_id": "880e8400-e29b-41d4-a716-446655440003",
      "name": "daily-scan-triggered",
      "source": "scheduler",
      "data_type": "schedule",
      "data": "{\"schedule_id\":\"sch_1234567890\",\"trigger_type\":\"cron\",\"schedule\":\"0 2 * * *\"}",
      "workspace": "example.com",
      "run_id": "ghi11111",
      "workflow_name": "subdomain-enum",
      "processed": true,
      "processed_at": "2025-01-16T02:00:00Z",
      "error": "",
      "created_at": "2025-01-16T02:00:00Z"
    },
    {
      "id": 5,
      "topic": "run.failed",
      "event_id": "990e8400-e29b-41d4-a716-446655440004",
      "name": "nuclei-scan-failed",
      "source": "executor",
      "data_type": "scan",
      "data": "{\"scan_id\":\"jkl22222\",\"target\":\"unreachable.com\",\"error\":\"connection timeout\"}",
      "workspace": "unreachable.com",
      "run_id": "jkl22222",
      "workflow_name": "nuclei-scan",
      "processed": false,
      "processed_at": null,
      "error": "connection timeout after 5 retries",
      "created_at": "2025-01-15T14:00:00Z"
    },
    {
      "id": 6,
      "topic": "step.completed",
      "event_id": "aae8400-e29b-41d4-a716-446655440005",
      "name": "run-subfinder-completed",
      "source": "executor",
      "data_type": "step",
      "data": "{\"step_name\":\"run-subfinder\",\"duration_ms\":45000,\"output_lines\":150}",
      "workspace": "example.com",
      "run_id": "abc12345",
      "workflow_name": "subdomain-enum",
      "processed": true,
      "processed_at": "2025-01-15T10:01:45Z",
      "error": "",
      "created_at": "2025-01-15T10:01:45Z"
    }
  ],
  "pagination": {
    "total": 150,
    "offset": 0,
    "limit": 20
  }
}
```

**Available Event Topics:**

| Topic                | Description                               |
| -------------------- | ----------------------------------------- |
| `run.started`        | Workflow execution started                |
| `run.completed`      | Workflow execution completed successfully |
| `run.failed`         | Workflow execution failed                 |
| `asset.discovered`   | New asset discovered during scan          |
| `asset.updated`      | Existing asset information updated        |
| `webhook.received`   | External webhook received                 |
| `schedule.triggered` | Scheduled workflow triggered              |
| `step.completed`     | Individual step completed                 |
| `step.failed`        | Individual step failed                    |
