# Smart Data Converters (`moving_beacon-owner1/my-actor-65`) Actor

A versatile 5-in-1 data conversion actor that intelligently transforms data between formats. Every converter includes sensible defaults in the input schema so you can run it instantly without any configuration.

- **URL**: https://apify.com/moving\_beacon-owner1/my-actor-65.md
- **Developed by:** [Jamshaid Arif](https://apify.com/moving_beacon-owner1) (community)
- **Categories:** Developer tools, Integrations, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🧠 Smart Data Converters — Apify Actor

A versatile **5-in-1** data conversion actor that intelligently transforms data between formats. Every converter includes sensible **defaults in the input schema** so you can run it instantly without any configuration.

---

### Converters

| ## | Converter | Input | Output |
|---|-----------|-------|--------|
| 1 | **HTML → Clean Text** | Raw HTML / URL | Plain text (no tags, ads, scripts) |
| 2 | **HTML → Article Summary** | Raw HTML / URL | Title, metadata, extractive summary |
| 3 | **JSON → Human-Readable Report** | JSON string | Formatted report with tables & stats |
| 4 | **Logs → Structured JSON** | Raw log text | Parsed entries + summary analytics |
| 5 | **Form Input → API Request** | Form fields JSON | Full HTTP request payload |

---

### Quick Start

1. **Select a converter** via the `converter_type` dropdown.
2. **Provide input** (or use the pre-filled defaults).
3. **Run the actor** — results are pushed to the default dataset.

All fields have defaults, so you can run the actor immediately after selecting a converter type.

---

### Input Schema Overview

#### Global

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `converter_type` | select | `html_to_clean_text` | Which converter to run |
| `url_to_scrape` | string | `""` | Optional URL to fetch HTML from (overrides `html_input`) |

#### Converter 1 & 2 — HTML Input

| Field | Type | Default |
|-------|------|---------|
| `html_input` | textarea | Sample AI article HTML |
| `preserve_links` | boolean | `true` |
| `preserve_line_breaks` | boolean | `true` |
| `summary_sentences` | integer | `5` |

#### Converter 3 — JSON Input

| Field | Type | Default |
|-------|------|---------|
| `json_input` | textarea | Sample company data JSON |
| `report_max_width` | integer | `100` |

#### Converter 4 — Log Input

| Field | Type | Default |
|-------|------|---------|
| `log_input` | textarea | 10 sample app log lines |

#### Converter 5 — Form + API Config

| Field | Type | Default |
|-------|------|---------|
| `form_input` | textarea | Sample user registration fields |
| `field_mapping` | textarea | Dot-notation mapping to nested API paths |
| `api_base_url` | string | `https://api.example.com` |
| `api_endpoint` | string | `/v2/users/register` |
| `api_method` | select | `POST` |
| `api_auth_type` | select | `bearer` |
| `validation_rules` | textarea | Sample required/min/max rules |

---

### Output

Results are pushed to the **default dataset** as structured JSON. Key outputs are also saved to the **key-value store** as plain text:

| Converter | KV Store Key | Content |
|-----------|-------------|---------|
| `html_to_clean_text` | `clean_text.txt` | Cleaned plain text |
| `html_to_article_summary` | `summary.txt` | Formatted summary |
| `json_to_report` | `report.txt` | ASCII-formatted report |

---

### Project Structure

````

apify-smart-converters/
├── .actor/
│   ├── actor.json            ## Actor metadata & config
│   └── input\_schema.json     ## Full input schema with defaults
├── src/
│   ├── **init**.py
│   ├── main.py               ## Actor entry point & routing
│   └── converters.py         ## All 5 converter classes
├── Dockerfile
├── requirements.txt
└── README.md

````

---

### Running Locally

```bash
## Install dependencies
pip install -r requirements.txt

## Set input via environment or INPUT.json
echo '{"converter_type": "html_to_clean_text"}' > INPUT.json

## Run
python -m src.main
````

***

### Supported Log Formats (Converter 4)

The log parser auto-detects:

- **Apache Combined** — `127.0.0.1 - - [10/Oct/2000:13:55:36 -0700] "GET /index.html ..."`
- **Nginx Error** — `2024/06/15 08:30:02 [error] 1234#0: ...`
- **Syslog** — `Jun 15 08:30:01 myhost sshd[1234]: ...`
- **Generic App** — `2024-06-15T08:30:01.123Z [INFO] [Source] message`
- **JSON Lines** — `{"timestamp": "...", "level": "INFO", "message": "..."}`

***

### License

MIT

# Actor input Schema

## `converter_type` (type: `string`):

Select which smart converter to run.

## `html_input` (type: `string`):

Raw HTML string to convert. Used by converters 1 (Clean Text) and 2 (Article Summary).

## `preserve_links` (type: `boolean`):

If enabled, hyperlink URLs are appended after link text as \[url]. Applies only to converter 1.

## `preserve_line_breaks` (type: `boolean`):

If enabled, block-level HTML tags (p, div, br, h1-h6, li) are converted to newlines. Applies only to converter 1.

## `summary_sentences` (type: `integer`):

Number of key sentences to include in the extractive summary. Applies only to converter 2.

## `json_input` (type: `string`):

Raw JSON string (object or array) to convert into a human-readable report. Used by converter 3.

## `report_max_width` (type: `integer`):

Maximum character width for the formatted report output. Applies only to converter 3.

## `log_input` (type: `string`):

Raw multi-line log text to parse into structured JSON. Supports Apache, Nginx, Syslog, generic app logs, and JSON-line logs. Used by converter 4.

## `form_input` (type: `string`):

A flat JSON object representing form field names and their string values. Used by converter 5.

## `field_mapping` (type: `string`):

A JSON object mapping form field names to nested API field paths (dot notation). Used by converter 5. Leave empty for 1:1 mapping.

## `api_base_url` (type: `string`):

The base URL for the generated API request. Applies only to converter 5.

## `api_endpoint` (type: `string`):

The API endpoint path appended to the base URL. Applies only to converter 5.

## `api_method` (type: `string`):

HTTP method for the generated API request. Applies only to converter 5.

## `api_auth_type` (type: `string`):

Authentication type to include in request headers. Applies only to converter 5.

## `validation_rules` (type: `string`):

A JSON object defining validation rules per field: required, min\_length, max\_length, min, max, pattern, enum. Used by converter 5.

## `url_to_scrape` (type: `string`):

If provided, the actor will fetch this URL first and use the HTML as input for converter 1 or 2. Overrides html\_input.

## Actor input object example

```json
{
  "converter_type": "html_to_clean_text",
  "html_input": "<!DOCTYPE html>\n<html>\n<head><title>Sample Article — AI Trends</title></head>\n<body>\n<nav>Home | Tech</nav>\n<script>trackPageView();</script>\n<article>\n  <h1>AI Trends Shaping the Future</h1>\n  <p>Artificial intelligence continues to evolve at a breathtaking pace.</p>\n  <p>Multimodal AI systems combining text, image, and audio are becoming mainstream.</p>\n</article>\n<footer>&copy; 2025 TechNews</footer>\n</body>\n</html>",
  "preserve_links": true,
  "preserve_line_breaks": true,
  "summary_sentences": 5,
  "json_input": "{\n  \"company\": \"TechCorp Inc.\",\n  \"fiscal_year\": 2025,\n  \"departments\": [\n    {\"name\": \"Engineering\", \"headcount\": 150, \"budget\": 5000000},\n    {\"name\": \"Marketing\", \"headcount\": 45, \"budget\": 2000000}\n  ]\n}",
  "report_max_width": 100,
  "log_input": "2025-01-15T08:30:01.123Z [INFO] [AuthService] User login successful: user_id=12345\n2025-01-15T08:30:10.012Z [ERROR] [PaymentGateway] Transaction failed: timeout after 30s\n2025-01-15T08:31:05.222Z [CRITICAL] [DiskMonitor] Disk usage at 95%",
  "form_input": "{\n  \"first_name\": \"Ali\",\n  \"last_name\": \"Hassan\",\n  \"email\": \"ali.hassan@example.com\",\n  \"age\": \"28\",\n  \"is_subscribed\": \"yes\"\n}",
  "field_mapping": "{\n  \"first_name\": \"user.firstName\",\n  \"last_name\": \"user.lastName\",\n  \"email\": \"user.email\"\n}",
  "api_base_url": "https://api.example.com",
  "api_endpoint": "/v2/users/register",
  "api_method": "POST",
  "api_auth_type": "bearer",
  "validation_rules": "{\n  \"first_name\": {\"required\": true},\n  \"email\": {\"required\": true}\n}",
  "url_to_scrape": ""
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "converter_type": "html_to_clean_text",
    "html_input": `<!DOCTYPE html>
<html>
<head><title>Sample Article — AI Trends</title></head>
<body>
<nav>Home | Tech</nav>
<script>trackPageView();</script>
<article>
  <h1>AI Trends Shaping the Future</h1>
  <p>Artificial intelligence continues to evolve at a breathtaking pace.</p>
  <p>Multimodal AI systems combining text, image, and audio are becoming mainstream.</p>
</article>
<footer>&copy; 2025 TechNews</footer>
</body>
</html>`,
    "preserve_links": true,
    "preserve_line_breaks": true,
    "summary_sentences": 5,
    "json_input": `{
  "company": "TechCorp Inc.",
  "fiscal_year": 2025,
  "departments": [
    {"name": "Engineering", "headcount": 150, "budget": 5000000},
    {"name": "Marketing", "headcount": 45, "budget": 2000000}
  ]
}`,
    "report_max_width": 100,
    "log_input": `2025-01-15T08:30:01.123Z [INFO] [AuthService] User login successful: user_id=12345
2025-01-15T08:30:10.012Z [ERROR] [PaymentGateway] Transaction failed: timeout after 30s
2025-01-15T08:31:05.222Z [CRITICAL] [DiskMonitor] Disk usage at 95%`,
    "form_input": `{
  "first_name": "Ali",
  "last_name": "Hassan",
  "email": "ali.hassan@example.com",
  "age": "28",
  "is_subscribed": "yes"
}`,
    "field_mapping": `{
  "first_name": "user.firstName",
  "last_name": "user.lastName",
  "email": "user.email"
}`,
    "api_base_url": "https://api.example.com",
    "api_endpoint": "/v2/users/register",
    "api_method": "POST",
    "api_auth_type": "bearer",
    "validation_rules": `{
  "first_name": {"required": true},
  "email": {"required": true}
}`,
    "url_to_scrape": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("moving_beacon-owner1/my-actor-65").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "converter_type": "html_to_clean_text",
    "html_input": """<!DOCTYPE html>
<html>
<head><title>Sample Article — AI Trends</title></head>
<body>
<nav>Home | Tech</nav>
<script>trackPageView();</script>
<article>
  <h1>AI Trends Shaping the Future</h1>
  <p>Artificial intelligence continues to evolve at a breathtaking pace.</p>
  <p>Multimodal AI systems combining text, image, and audio are becoming mainstream.</p>
</article>
<footer>&copy; 2025 TechNews</footer>
</body>
</html>""",
    "preserve_links": True,
    "preserve_line_breaks": True,
    "summary_sentences": 5,
    "json_input": """{
  \"company\": \"TechCorp Inc.\",
  \"fiscal_year\": 2025,
  \"departments\": [
    {\"name\": \"Engineering\", \"headcount\": 150, \"budget\": 5000000},
    {\"name\": \"Marketing\", \"headcount\": 45, \"budget\": 2000000}
  ]
}""",
    "report_max_width": 100,
    "log_input": """2025-01-15T08:30:01.123Z [INFO] [AuthService] User login successful: user_id=12345
2025-01-15T08:30:10.012Z [ERROR] [PaymentGateway] Transaction failed: timeout after 30s
2025-01-15T08:31:05.222Z [CRITICAL] [DiskMonitor] Disk usage at 95%""",
    "form_input": """{
  \"first_name\": \"Ali\",
  \"last_name\": \"Hassan\",
  \"email\": \"ali.hassan@example.com\",
  \"age\": \"28\",
  \"is_subscribed\": \"yes\"
}""",
    "field_mapping": """{
  \"first_name\": \"user.firstName\",
  \"last_name\": \"user.lastName\",
  \"email\": \"user.email\"
}""",
    "api_base_url": "https://api.example.com",
    "api_endpoint": "/v2/users/register",
    "api_method": "POST",
    "api_auth_type": "bearer",
    "validation_rules": """{
  \"first_name\": {\"required\": true},
  \"email\": {\"required\": true}
}""",
    "url_to_scrape": "",
}

# Run the Actor and wait for it to finish
run = client.actor("moving_beacon-owner1/my-actor-65").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "converter_type": "html_to_clean_text",
  "html_input": "<!DOCTYPE html>\\n<html>\\n<head><title>Sample Article — AI Trends</title></head>\\n<body>\\n<nav>Home | Tech</nav>\\n<script>trackPageView();</script>\\n<article>\\n  <h1>AI Trends Shaping the Future</h1>\\n  <p>Artificial intelligence continues to evolve at a breathtaking pace.</p>\\n  <p>Multimodal AI systems combining text, image, and audio are becoming mainstream.</p>\\n</article>\\n<footer>&copy; 2025 TechNews</footer>\\n</body>\\n</html>",
  "preserve_links": true,
  "preserve_line_breaks": true,
  "summary_sentences": 5,
  "json_input": "{\\n  \\"company\\": \\"TechCorp Inc.\\",\\n  \\"fiscal_year\\": 2025,\\n  \\"departments\\": [\\n    {\\"name\\": \\"Engineering\\", \\"headcount\\": 150, \\"budget\\": 5000000},\\n    {\\"name\\": \\"Marketing\\", \\"headcount\\": 45, \\"budget\\": 2000000}\\n  ]\\n}",
  "report_max_width": 100,
  "log_input": "2025-01-15T08:30:01.123Z [INFO] [AuthService] User login successful: user_id=12345\\n2025-01-15T08:30:10.012Z [ERROR] [PaymentGateway] Transaction failed: timeout after 30s\\n2025-01-15T08:31:05.222Z [CRITICAL] [DiskMonitor] Disk usage at 95%",
  "form_input": "{\\n  \\"first_name\\": \\"Ali\\",\\n  \\"last_name\\": \\"Hassan\\",\\n  \\"email\\": \\"ali.hassan@example.com\\",\\n  \\"age\\": \\"28\\",\\n  \\"is_subscribed\\": \\"yes\\"\\n}",
  "field_mapping": "{\\n  \\"first_name\\": \\"user.firstName\\",\\n  \\"last_name\\": \\"user.lastName\\",\\n  \\"email\\": \\"user.email\\"\\n}",
  "api_base_url": "https://api.example.com",
  "api_endpoint": "/v2/users/register",
  "api_method": "POST",
  "api_auth_type": "bearer",
  "validation_rules": "{\\n  \\"first_name\\": {\\"required\\": true},\\n  \\"email\\": {\\"required\\": true}\\n}",
  "url_to_scrape": ""
}' |
apify call moving_beacon-owner1/my-actor-65 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=moving_beacon-owner1/my-actor-65",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Smart Data Converters",
        "description": "A versatile 5-in-1 data conversion actor that intelligently transforms data between formats. Every converter includes sensible defaults in the input schema so you can run it instantly without any configuration.",
        "version": "0.0",
        "x-build-id": "IWcc6ZJMzOQIJOReg"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/moving_beacon-owner1~my-actor-65/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-moving_beacon-owner1-my-actor-65",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/moving_beacon-owner1~my-actor-65/runs": {
            "post": {
                "operationId": "runs-sync-moving_beacon-owner1-my-actor-65",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/moving_beacon-owner1~my-actor-65/run-sync": {
            "post": {
                "operationId": "run-sync-moving_beacon-owner1-my-actor-65",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "converter_type"
                ],
                "properties": {
                    "converter_type": {
                        "title": "Converter Type",
                        "enum": [
                            "html_to_clean_text",
                            "html_to_article_summary",
                            "json_to_report",
                            "logs_to_structured_json",
                            "form_to_api_request"
                        ],
                        "type": "string",
                        "description": "Select which smart converter to run.",
                        "default": "html_to_clean_text"
                    },
                    "html_input": {
                        "title": "HTML Input",
                        "type": "string",
                        "description": "Raw HTML string to convert. Used by converters 1 (Clean Text) and 2 (Article Summary).",
                        "default": "<!DOCTYPE html>\n<html>\n<head><title>Sample Article — AI Trends</title>\n<meta name=\"author\" content=\"Jane Doe\">\n<meta name=\"description\" content=\"A look at the latest artificial intelligence trends shaping 2025.\">\n<meta name=\"date\" content=\"2025-01-15\">\n</head>\n<body>\n<nav><a href=\"/\">Home</a> | <a href=\"/tech\">Tech</a></nav>\n<script>var ads = true; trackPageView();</script>\n<style>.promo { color: red; }</style>\n<div class=\"ad-banner\">Buy our product now! Limited offer!</div>\n<article>\n  <h1>AI Trends Shaping the Future of Technology</h1>\n  <p>Artificial intelligence continues to evolve at a breathtaking pace. From large language models to autonomous robotics, the field is experiencing unprecedented growth and innovation.</p>\n  <p>In 2025, several key trends have emerged. First, multimodal AI systems that combine text, image, and audio understanding are becoming mainstream. Companies across industries are adopting these systems for customer service, content creation, and data analysis.</p>\n  <p>Second, the rise of small, efficient models has democratized AI access. Organizations no longer need massive compute budgets to deploy intelligent systems. Edge computing and on-device AI are making real-time processing possible even on mobile devices.</p>\n  <p>Third, AI safety and alignment research has matured significantly. Governments and institutions worldwide have established frameworks for responsible AI development, including mandatory testing and transparency requirements.</p>\n  <p>Experts predict that by 2027, AI will be embedded in virtually every software product. The economic impact is estimated at <strong>$15.7 trillion</strong> globally, according to a <a href=\"https://example.com/ai-report\">recent industry report</a>.</p>\n  <p>However, challenges remain. Data privacy concerns, algorithmic bias, and workforce displacement continue to spark debate among policymakers and technologists alike.</p>\n</article>\n<footer><p>&copy; 2025 TechNews. All rights reserved.</p>\n<div class=\"newsletter-signup\">Subscribe to our newsletter!</div></footer>\n</body>\n</html>"
                    },
                    "preserve_links": {
                        "title": "Preserve Links (HTML → Clean Text)",
                        "type": "boolean",
                        "description": "If enabled, hyperlink URLs are appended after link text as [url]. Applies only to converter 1.",
                        "default": true
                    },
                    "preserve_line_breaks": {
                        "title": "Preserve Line Breaks (HTML → Clean Text)",
                        "type": "boolean",
                        "description": "If enabled, block-level HTML tags (p, div, br, h1-h6, li) are converted to newlines. Applies only to converter 1.",
                        "default": true
                    },
                    "summary_sentences": {
                        "title": "Summary Sentences (HTML → Summary)",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Number of key sentences to include in the extractive summary. Applies only to converter 2.",
                        "default": 5
                    },
                    "json_input": {
                        "title": "JSON Input",
                        "type": "string",
                        "description": "Raw JSON string (object or array) to convert into a human-readable report. Used by converter 3.",
                        "default": "{\n  \"company\": \"TechCorp Inc.\",\n  \"fiscal_year\": 2025,\n  \"is_public\": true,\n  \"ceo\": \"Jane Smith\",\n  \"founded\": \"2010-03-15\",\n  \"website\": \"https://techcorp.example.com\",\n  \"departments\": [\n    {\"name\": \"Engineering\", \"headcount\": 150, \"budget\": 5000000.00},\n    {\"name\": \"Marketing\", \"headcount\": 45, \"budget\": 2000000.00},\n    {\"name\": \"Sales\", \"headcount\": 80, \"budget\": 3500000.00},\n    {\"name\": \"HR\", \"headcount\": 20, \"budget\": 800000.00}\n  ],\n  \"quarterly_revenue\": [\n    {\"quarter\": \"Q1\", \"revenue\": 12500000, \"growth_pct\": 5.2},\n    {\"quarter\": \"Q2\", \"revenue\": 13200000, \"growth_pct\": 5.6},\n    {\"quarter\": \"Q3\", \"revenue\": 14100000, \"growth_pct\": 6.8},\n    {\"quarter\": \"Q4\", \"revenue\": 15800000, \"growth_pct\": 12.1}\n  ]\n}"
                    },
                    "report_max_width": {
                        "title": "Report Max Width (JSON → Report)",
                        "minimum": 40,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum character width for the formatted report output. Applies only to converter 3.",
                        "default": 100
                    },
                    "log_input": {
                        "title": "Log Input",
                        "type": "string",
                        "description": "Raw multi-line log text to parse into structured JSON. Supports Apache, Nginx, Syslog, generic app logs, and JSON-line logs. Used by converter 4.",
                        "default": "2025-01-15T08:30:01.123Z [INFO] [AuthService] User login successful: user_id=12345\n2025-01-15T08:30:02.456Z [DEBUG] [DBPool] Connection acquired: pool_size=8/20\n2025-01-15T08:30:05.789Z [WARN] [RateLimiter] Rate limit approaching for IP 192.168.1.50: 95/100\n2025-01-15T08:30:10.012Z [ERROR] [PaymentGateway] Transaction failed: timeout after 30s, tx_id=TXN-98765\n2025-01-15T08:30:10.234Z [ERROR] [PaymentGateway] Retry attempt 1/3 for tx_id=TXN-98765\n2025-01-15T08:30:15.567Z [INFO] [PaymentGateway] Transaction succeeded on retry: tx_id=TXN-98765\n2025-01-15T08:30:20.890Z [INFO] [CacheManager] Cache hit ratio: 87.3%, evictions=12\n2025-01-15T08:31:01.111Z [WARN] [HealthCheck] Service 'recommendation-engine' response time: 2500ms (threshold: 2000ms)\n2025-01-15T08:31:05.222Z [CRITICAL] [DiskMonitor] Disk usage at 95%: /var/data partition\n2025-01-15T08:31:10.333Z [INFO] [Scheduler] Cleanup job started: removing logs older than 30 days"
                    },
                    "form_input": {
                        "title": "Form Input (JSON object)",
                        "type": "string",
                        "description": "A flat JSON object representing form field names and their string values. Used by converter 5.",
                        "default": "{\n  \"first_name\": \"Ali\",\n  \"last_name\": \"Hassan\",\n  \"email\": \"ali.hassan@example.com\",\n  \"age\": \"28\",\n  \"is_subscribed\": \"yes\",\n  \"signup_date\": \"2025/01/15\",\n  \"phone\": \"+92-300-1234567\",\n  \"interests\": \"AI, Machine Learning, Python\",\n  \"address_city\": \"Lahore\",\n  \"address_country\": \"PK\"\n}"
                    },
                    "field_mapping": {
                        "title": "Field Mapping (Form → API)",
                        "type": "string",
                        "description": "A JSON object mapping form field names to nested API field paths (dot notation). Used by converter 5. Leave empty for 1:1 mapping.",
                        "default": "{\n  \"first_name\": \"user.firstName\",\n  \"last_name\": \"user.lastName\",\n  \"email\": \"user.email\",\n  \"age\": \"user.age\",\n  \"is_subscribed\": \"preferences.newsletter\",\n  \"signup_date\": \"metadata.signupDate\",\n  \"phone\": \"user.phone\",\n  \"interests\": \"preferences.interests\",\n  \"address_city\": \"user.address.city\",\n  \"address_country\": \"user.address.country\"\n}"
                    },
                    "api_base_url": {
                        "title": "API Base URL (Form → API)",
                        "type": "string",
                        "description": "The base URL for the generated API request. Applies only to converter 5.",
                        "default": "https://api.example.com"
                    },
                    "api_endpoint": {
                        "title": "API Endpoint (Form → API)",
                        "type": "string",
                        "description": "The API endpoint path appended to the base URL. Applies only to converter 5.",
                        "default": "/v2/users/register"
                    },
                    "api_method": {
                        "title": "API Method (Form → API)",
                        "enum": [
                            "GET",
                            "POST",
                            "PUT",
                            "PATCH",
                            "DELETE"
                        ],
                        "type": "string",
                        "description": "HTTP method for the generated API request. Applies only to converter 5.",
                        "default": "POST"
                    },
                    "api_auth_type": {
                        "title": "API Auth Type (Form → API)",
                        "enum": [
                            "none",
                            "bearer",
                            "api_key"
                        ],
                        "type": "string",
                        "description": "Authentication type to include in request headers. Applies only to converter 5.",
                        "default": "bearer"
                    },
                    "validation_rules": {
                        "title": "Validation Rules (Form → API)",
                        "type": "string",
                        "description": "A JSON object defining validation rules per field: required, min_length, max_length, min, max, pattern, enum. Used by converter 5.",
                        "default": "{\n  \"first_name\": {\"required\": true, \"min_length\": 1, \"max_length\": 50},\n  \"last_name\": {\"required\": true, \"min_length\": 1, \"max_length\": 50},\n  \"email\": {\"required\": true},\n  \"age\": {\"required\": true, \"min\": 13, \"max\": 120}\n}"
                    },
                    "url_to_scrape": {
                        "title": "URL to Scrape (Optional)",
                        "type": "string",
                        "description": "If provided, the actor will fetch this URL first and use the HTML as input for converter 1 or 2. Overrides html_input.",
                        "default": ""
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
