Files
n8n-workflows/Documentation/api-endpoints.md
dopeuni444 ae8cf6dc5b Add comprehensive analysis and documentation files
Added multiple markdown reports summarizing repository status, integration landscape, workflow analysis, and executive summaries. Introduced new Python modules for performance testing, enhanced API, and community features. Updated search_categories.json and added new templates and static files for mobile and communication interfaces.
2025-09-29 05:10:12 +04:00

491 lines
7.9 KiB
Markdown

# N8N Workflow API Endpoints Documentation
#
# Base URL
```text
text
<https://scan-might-updates-postage.trycloudflare.com/api>
```text
text
#
# Available Endpoints
#
##
1. Statistics Endpoint
**URL:*
* `/api/stats`
**Method:*
* GET
**Description:*
* Returns overall repository statistics
**Response Structure:*
*
```text
json
{
"total": 2055,
"active": 215,
"inactive": 1840,
"triggers": {
"Manual": 1234,
"Webhook": 456,
"Scheduled": 234,
"Complex": 131
},
"complexity": {
"low": 1456,
"medium": 456,
"high": 143
},
"total_nodes": 29518,
"unique_integrations": 365,
"last_indexed": "2025-07-27 17:40:54"
}
```text
text
#
##
2. Workflow Search Endpoint
**URL:*
* `/api/workflows`
**Method:*
* GET
**Description:*
* Search and paginate through workflows
**Query Parameters:*
*
- `q` (string): Search query (default: '')
- `trigger` (string): Filter by trigger type
- 'all', 'Webhook', 'Scheduled', 'Manual', 'Complex' (default: 'all')
- `complexity` (string): Filter by complexity
- 'all', 'low', 'medium', 'high' (default: 'all')
- `active_only` (boolean): Show only active workflows (default: false)
- `page` (integer): Page number (default: 1)
- `per_page` (integer): Results per page, max 100 (default: 20)
**Example Request:*
*
```text
bash
curl "<https://scan-might-updates-postage.trycloudflare.com/api/workflows?per_page=100&page=1">
```text
text
**Response Structure:*
*
```text
json
{
"workflows": [
{
"id": 102,
"filename": "example.json",
"name": "Example Workflow",
"workflow_id": "",
"active": 0,
"description": "Example description",
"trigger_type": "Manual",
"complexity": "medium",
"node_count": 6,
"integrations": ["HTTP", "Google Sheets"],
"tags": [],
"created_at": "",
"updated_at": "",
"file_hash": "...",
"file_size": 4047,
"analyzed_at": "2025-07-27 17:40:54"
}
],
"total": 2055,
"page": 1,
"per_page": 100,
"pages": 21,
"query": "",
"filters": {
"trigger": "all",
"complexity": "all",
"active_only": false
}
}
```text
text
#
##
3. Individual Workflow Detail Endpoint
**URL:*
* `/api/workflows/{filename}`
**Method:*
* GET
**Description:*
* Get detailed information about a specific workflow
**Example Request:*
*
```text
bash
curl "<https://scan-might-updates-postage.trycloudflare.com/api/workflows/0150_Awsrekognition_GoogleSheets_Automation_Webhook.json">
```text
text
**Response Structure:*
*
```text
json
{
"metadata": {
"id": 102,
"filename": "0150_Awsrekognition_GoogleSheets_Automation_Webhook.json",
"name": "Awsrekognition Googlesheets Automation Webhook",
"workflow_id": "",
"active": 0,
"description": "Manual workflow that orchestrates Httprequest, Google Sheets, and Awsrekognition for data processing. Uses 6 nodes.",
"trigger_type": "Manual",
"complexity": "medium",
"node_count": 6,
"integrations": ["Httprequest", "Google Sheets", "Awsrekognition"],
"tags": [],
"created_at": "",
"updated_at": "",
"file_hash": "74bdca251ec3446c2f470c17024beccd",
"file_size": 4047,
"analyzed_at": "2025-07-27 17:40:54"
},
"raw_json": {
"nodes": [...],
"connections": {...}
}
}
```text
text
**Important:*
* The actual workflow metadata is nested under the `metadata` key, not at the root level.
#
##
4. Categories Endpoint
**URL:*
* `/api/categories`
**Method:*
* GET
**Description:*
* Get list of available workflow categories
**Response Structure:*
*
```text
json
{
"categories": [
"AI Agent Development",
"Business Process Automation",
"CRM & Sales",
"Cloud Storage & File Management",
"Communication & Messaging",
"Creative Content & Video Automation",
"Creative Design Automation",
"Data Processing & Analysis",
"E-commerce & Retail",
"Financial & Accounting",
"Marketing & Advertising Automation",
"Project Management",
"Social Media Management",
"Technical Infrastructure & DevOps",
"Uncategorized",
"Web Scraping & Data Extraction"
]
}
```text
text
#
##
5. Category Mappings Endpoint
**URL:*
* `/api/category-mappings`
**Method:*
* GET
**Description:*
* Get complete mapping of workflow filenames to categories
**Response Structure:*
*
```text
json
{
"mappings": {
"0001_Telegram_Schedule_Automation_Scheduled.json": "Communication & Messaging",
"0002_Manual_Totp_Automation_Triggered.json": "Uncategorized",
"0003_Bitwarden_Automate.json": "Uncategorized",
"...": "...",
"workflow_filename.json": "Category Name"
}
}
```text
text
**Total Mappings:*
* 2,055 filename-to-category mappings
#
##
6. Download Workflow Endpoint
**URL:*
* `/api/workflows/{filename}/download`
**Method:*
* GET
**Description:*
* Download the raw JSON file for a workflow
**Response:*
* Raw JSON workflow file with appropriate headers for download
#
##
7. Workflow Diagram Endpoint
**URL:*
* `/api/workflows/{filename}/diagram`
**Method:*
* GET
**Description:*
* Generate a Mermaid diagram representation of the workflow
**Response Structure:*
*
```text
json
{
"diagram": "graph TD\n node1[\"Node Name\\n(Type)\"]\n node1 --> node2\n ..."
}
```text
text
#
# Usage Examples
#
## Get Business Process Automation Workflows
```text
bash
# Step 1: Get category mappings
curl -s "<https://scan-might-updates-postage.trycloudflare.com/api/category-mappings"> \
| jq -r '.mappings | to_entries | map(select(.value == "Business Process Automation")) | .[].key'
# Step 2: For each filename, get details
curl -s "<https://scan-might-updates-postage.trycloudflare.com/api/workflows/{filename}"> \
| jq '.metadata'
```text
text
#
## Search for Specific Workflows
```text
bash
# Search for workflows containing "calendar"
curl -s "<https://scan-might-updates-postage.trycloudflare.com/api/workflows?q=calendar&per_page=50">
# Get only webhook-triggered workflows
curl -s "<https://scan-might-updates-postage.trycloudflare.com/api/workflows?trigger=Webhook&per_page=100">
# Get only active workflows
curl -s "<https://scan-might-updates-postage.trycloudflare.com/api/workflows?active_only=true&per_page=100">
```text
text
#
## Pagination Through All Workflows
```text
bash
# Get total pages
total_pages=$(curl -s "<https://scan-might-updates-postage.trycloudflare.com/api/workflows?per_page=100&page=1"> | jq '.pages')
# Loop through all pages
for page in $(seq 1 $total_pages); do
curl -s "<https://scan-might-updates-postage.trycloudflare.com/api/workflows?per_page=100&page=${page}">
done
```text
text
#
# Rate Limiting and Best Practices
#
## Recommended Practices
- Use small delays between requests (0.05-0.1 seconds)
- Process in batches by category for better organization
- Handle JSON parsing errors gracefully
- Validate response structure before processing
#
## Performance Tips
- Use `per_page=100` for maximum efficiency
- Cache category mappings for multiple operations
- Process categories in parallel if needed
- Use jq for efficient JSON processing
#
# Error Handling
#
## Common Response Codes
- `200`: Success
- `404`: Workflow not found
- `500`: Server error
- `408`: Request timeout
#
## Error Response Structure
```text
json
{
"error": "Error message",
"details": "Additional error details"
}
```text
text
#
# Data Quality Notes
#
## Known Issues
1. Some workflow names may be generic (e.g., "My workflow")
2. Integration names are extracted from node types and may vary in formatting
3. Descriptions are auto-generated and may not reflect actual workflow purpose
4. Active status indicates workflow configuration, not actual usage
#
## Data Reliability
- **File hashes**: Reliable for detecting changes
- **Node counts**: Accurate
- **Integration lists**: Generally accurate but may include core n8n components
- **Complexity ratings**: Based on node count (≤5: low, 6-15: medium, 16+: high)
- **Categories**: Human-curated and reliable