Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
a963c7f
Add Fetch Built-in Template API docs
saikatCdas Apr 28, 2026
83a6b7a
Add Email Patterns REST API docs
saikatCdas Apr 28, 2026
65a9958
Add Reports OpenAPI specs and docs
saikatCdas Apr 28, 2026
8fa096f
add AI settings, test, and generate endpoint docs
saikatCdas Apr 28, 2026
48596ee
bounce handler added in docs
saikatCdas Apr 28, 2026
9bf7200
add sequence email delay patch and pro top campaigns report
saikatCdas Apr 28, 2026
dac7a65
add pro subscribers export GET and POST endpoints
saikatCdas Apr 28, 2026
7e5b064
campaigns unSchedule added in doc
saikatCdas Apr 28, 2026
c2a8204
Updated
saikatCdas Apr 28, 2026
e1b0387
Merge pull request #58 from FluentCRM/Saikat/built-in-template
saikatCdas Apr 28, 2026
4630816
Merge branch 'Sync-fluent-crm-rest-api-documentation' into Saikat/ema…
saikatCdas Apr 28, 2026
286e0ce
Merge pull request #59 from FluentCRM/Saikat/email-patterns
saikatCdas Apr 28, 2026
d34d7bc
Merge branch 'Sync-fluent-crm-rest-api-documentation' into Saikat/rep…
saikatCdas Apr 28, 2026
b7e3d01
Merge pull request #60 from FluentCRM/Saikat/reports-
saikatCdas Apr 28, 2026
3a88fe1
Merge branch 'Sync-fluent-crm-rest-api-documentation' into Saikat/ai
saikatCdas Apr 28, 2026
7602b1a
Merge pull request #61 from FluentCRM/Saikat/ai
saikatCdas Apr 28, 2026
5fef4a0
Merge pull request #62 from FluentCRM/Saikat/bounce-handler
saikatCdas Apr 28, 2026
2d8d7d6
Merge branch 'Sync-fluent-crm-rest-api-documentation' into Saikat/-ad…
saikatCdas Apr 28, 2026
598082d
Merge pull request #63 from FluentCRM/Saikat/-add-sequence-email-dela…
saikatCdas Apr 28, 2026
0c51912
Merge branch 'Sync-fluent-crm-rest-api-documentation' into Saikat/exp…
saikatCdas Apr 28, 2026
cb2b0a1
Merge pull request #64 from FluentCRM/Saikat/export-subscribers
saikatCdas Apr 28, 2026
07f3e90
Merge branch 'Sync-fluent-crm-rest-api-documentation' into Saikat/cam…
saikatCdas Apr 28, 2026
e4e8c6d
Merge pull request #65 from FluentCRM/Saikat/campaigns-unSchedule
saikatCdas Apr 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 51 additions & 2 deletions src/.vitepress/sidebars/rest-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,27 @@ export default [
{ text: 'Bulk Action <badge type="warning">POST</badge>', link: '/rest-api/operations/templates/bulk-action-templates' },
{ text: 'Get Smart Codes <badge type="tip">GET</badge>', link: '/rest-api/operations/templates/get-smart-codes' },
{ text: 'Set Global Style <badge type="warning">POST</badge>', link: '/rest-api/operations/templates/set-global-style' },
{ text: 'Fetch Built-in Template <badge type="warning">POST</badge>', link: '/rest-api/operations/templates/get-built-in-template' },
{ text: 'Built-in Templates <badge type="tip">GET</badge>', link: '/rest-api/operations/templates/get-built-in-templates' },
]
},
{
text: 'Email Patterns',
collapsed: true,
items: [
{ text: 'List Email Patterns <badge type="tip">GET</badge>', link: '/rest-api/operations/email-patterns/list-email-patterns' },
{ text: 'List Patterns (WP Format) <badge type="tip">GET</badge>', link: '/rest-api/operations/email-patterns/list-email-patterns-wp-format' },
{ text: 'List Categories <badge type="tip">GET</badge>', link: '/rest-api/operations/email-patterns/list-email-pattern-categories' },
{ text: 'Create Category <badge type="warning">POST</badge>', link: '/rest-api/operations/email-patterns/create-email-pattern-category' },
{ text: 'Delete Category <badge type="danger">DELETE</badge>', link: '/rest-api/operations/email-patterns/delete-email-pattern-category' },
{ text: 'Create Email Pattern <badge type="warning">POST</badge>', link: '/rest-api/operations/email-patterns/create-email-pattern' },
{ text: 'Create Pattern (WP Format) <badge type="warning">POST</badge>', link: '/rest-api/operations/email-patterns/create-email-pattern-wp-format' },
{ text: 'Get Email Pattern <badge type="tip">GET</badge>', link: '/rest-api/operations/email-patterns/get-email-pattern' },
{ text: 'Update Email Pattern <badge type="info">PUT</badge>', link: '/rest-api/operations/email-patterns/update-email-pattern' },
{ text: 'Delete Email Pattern <badge type="danger">DELETE</badge>', link: '/rest-api/operations/email-patterns/delete-email-pattern' },
{ text: 'Bulk Action <badge type="warning">POST</badge>', link: '/rest-api/operations/email-patterns/bulk-action-email-patterns' },
]
},
{
text: 'Funnels (Automations)',
collapsed: true,
Expand Down Expand Up @@ -201,6 +219,7 @@ export default [
{ text: 'Get Email <badge type="tip">GET</badge>', link: '/rest-api/operations/sequences/get-sequence-email' },
{ text: 'Create Email <badge type="warning">POST</badge>', link: '/rest-api/operations/sequences/create-sequence-email' },
{ text: 'Update Email <badge type="info">PUT</badge>', link: '/rest-api/operations/sequences/update-sequence-email' },
{ text: 'Update Email Delay <badge type="info">PATCH</badge>', link: '/rest-api/operations/sequences/update-sequence-email-delay' },
{ text: 'Delete Email <badge type="danger">DELETE</badge>', link: '/rest-api/operations/sequences/delete-sequence-email' },
{ text: 'Duplicate Email <badge type="warning">POST</badge>', link: '/rest-api/operations/sequences/duplicate-sequence-email' },
{ text: 'Create/Update Email <badge type="warning">POST</badge>', link: '/rest-api/operations/sequences/create-or-update-sequence-email' },
Expand Down Expand Up @@ -230,6 +249,14 @@ export default [
{ text: 'Update Labels <badge type="info">PUT</badge>', link: '/rest-api/operations/recurring-campaigns/update-recurring-campaign-labels' },
]
},
{
text: 'Subscribers Export <badge type="danger">Pro</badge>',
collapsed: true,
items: [
{ text: 'Get Export Page <badge type="tip">GET</badge>', link: '/rest-api/operations/subscribers-export/get-subscribers-export-page' },
{ text: 'Post Export Page <badge type="warning">POST</badge>', link: '/rest-api/operations/subscribers-export/post-subscribers-export-page' },
]
},
{
text: 'Dynamic Segments <badge type="danger">Pro</badge>',
collapsed: true,
Expand Down Expand Up @@ -284,17 +311,38 @@ export default [
{ text: 'Email Sent Stats <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-email-sent-stats' },
{ text: 'Email Open Stats <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-email-open-stats' },
{ text: 'Email Click Stats <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-email-click-stats' },
{ text: 'Email Unsubscribe Stats <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-email-unsub-stats' },
{ text: 'Contacts by Status <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-contacts-by-status' },
{ text: 'Contacts by Tags <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-contacts-by-tags' },
{ text: 'Contacts by Lists <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-contacts-by-lists' },
{ text: 'Contacts by Country <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-contacts-by-country' },
{ text: 'Email Performance <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-email-performance' },
{ text: 'Report Options <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-report-options' },
{ text: 'Ajax Options <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-ajax-options' },
{ text: 'Taxonomy Terms <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-taxonomy-terms' },
{ text: 'Cascade Selections <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-cascade-selections' },
{ text: 'Get Emails <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-report-emails' },
{ text: 'Delete Emails <badge type="danger">DELETE</badge>', link: '/rest-api/operations/reports/delete-report-emails' },
{ text: 'Top Campaigns <badge type="tip">GET</badge> <badge type="danger">Pro</badge>', link: '/rest-api/operations/reports/get-top-campaigns' },
{ text: 'Recent Tags <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-recent-tags' },
{ text: 'Campaigns List <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-campaigns-list' },
{ text: 'Campaign Options <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-campaign-options' },
{ text: 'Automation Reports <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-automation-reports' },
{ text: 'Automation Step Report <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-automation-step-report' },
{ text: 'Advanced Providers <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/get-advanced-report-providers' },
{ text: 'Ping <badge type="tip">GET</badge>', link: '/rest-api/operations/reports/ping-report' },
]
},
{
text: 'AI',
collapsed: true,
items: [
{ text: 'Get AI Settings <badge type="tip">GET</badge>', link: '/rest-api/operations/ai/get-ai-settings' },
{ text: 'Save AI Settings <badge type="warning">POST</badge>', link: '/rest-api/operations/ai/save-ai-settings' },
{ text: 'Test AI Connection <badge type="warning">POST</badge>', link: '/rest-api/operations/ai/test-ai-connection' },
{ text: 'Generate AI Content <badge type="warning">POST</badge>', link: '/rest-api/operations/ai/generate-ai-content' },
]
},
{
text: 'Settings',
collapsed: true,
Expand Down Expand Up @@ -430,6 +478,7 @@ export default [
{ text: 'Delete Campaign <badge type="danger">DELETE</badge>', link: '/rest-api/operations/sms/delete-sms-campaign' },
{ text: 'Schedule <badge type="warning">POST</badge>', link: '/rest-api/operations/sms/schedule-sms-campaign' },
{ text: 'Unschedule <badge type="warning">POST</badge>', link: '/rest-api/operations/sms/unschedule-sms-campaign' },
{ text: 'Un-schedule (Legacy) <badge type="warning">POST</badge>', link: '/rest-api/operations/sms/un-schedule-sms-campaign' },
{ text: 'Pause <badge type="warning">POST</badge>', link: '/rest-api/operations/sms/pause-sms-campaign' },
{ text: 'Resume <badge type="warning">POST</badge>', link: '/rest-api/operations/sms/resume-sms-campaign' },
{ text: 'Duplicate <badge type="warning">POST</badge>', link: '/rest-api/operations/sms/duplicate-sms-campaign' },
Expand Down Expand Up @@ -477,8 +526,8 @@ export default [
{ text: 'List Docs <badge type="tip">GET</badge>', link: '/rest-api/operations/docs/list-docs' },
{ text: 'Get Doc <badge type="tip">GET</badge>', link: '/rest-api/operations/docs/get-doc' },
{ text: 'Get Addons <badge type="tip">GET</badge>', link: '/rest-api/operations/docs/get-doc-addons' },
{ text: 'Bounce Handler <badge type="warning">POST</badge>', link: '/rest-api/operations/public-bounce/handle-bounce-with-handle' },
{ text: 'Bounce Handler (Alt) <badge type="warning">POST</badge>', link: '/rest-api/operations/public-bounce/handle-bounce' },
{ text: 'Bounce Handler <badge type="warning">ANY</badge>', link: '/rest-api/operations/public-bounce/handle-bounce-with-handle' },
{ text: 'Bounce Handler (Alt) <badge type="warning">ANY</badge>', link: '/rest-api/operations/public-bounce/handle-bounce' },
]
},
]
172 changes: 172 additions & 0 deletions src/public/openapi/ai/generate-ai-content.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
{
"openapi": "3.0.4",
"info": {
"title": "FluentCRM API",
"description": "Complete REST API documentation for FluentCRM — a self-hosted email marketing and CRM plugin for WordPress.",
"version": "1.0.0"
},
"servers": [
{
"url": "https://{website}/wp-json/fluent-crm/v2",
"description": "Your WordPress website",
"variables": {
"website": {
"default": "YourWebsite.com",
"description": "Your WordPress website domain (without https://)"
}
}
}
],
"security": [
{
"ApplicationPasswords": []
}
],
"paths": {
"/ai/generate": {
"post": {
"operationId": "generateAiContent",
"summary": "POST Generate AI Content",
"description": "Generate or transform email copy using the saved AI settings. Supported actions are `rewrite`, `shorten`, `expand`, `fix_grammar`, and `custom`.",
"tags": [
"AI"
],
"security": [
{
"ApplicationPasswords": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"rewrite",
"shorten",
"expand",
"fix_grammar",
"custom"
],
"description": "Transformation action to perform."
},
"content": {
"type": "string",
"description": "Selected email content to transform. Required for all actions except a custom prompt-only request."
},
"tone": {
"type": "string",
"description": "Optional tone hint appended to the generated system prompt."
},
"custom_prompt": {
"type": "string",
"description": "Custom instruction text. Used when `action=custom`."
}
},
"required": [
"action"
]
},
"example": {
"action": "rewrite",
"content": "Hello there, I hope this email finds you well. We wanted to let you know about our new offer.",
"tone": "friendly",
"custom_prompt": ""
}
}
}
},
"responses": {
"200": {
"description": "AI content generated successfully.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"content": {
"type": "string",
"description": "Generated text returned by the configured AI provider after sanitization."
}
},
"required": [
"content"
]
},
"example": {
"content": "Hi {{contact.first_name}},\n\nWe’ve got a new offer you might like. Here’s a quick look at what’s new."
}
}
}
},
"422": {
"description": "Validation, configuration, or provider API error.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
},
"examples": {
"invalidAction": {
"value": {
"message": "Invalid action specified.",
"data": {
"status": 422
}
}
},
"notEnabled": {
"value": {
"message": "AI Writing is not enabled. Please configure it in Settings.",
"data": {
"status": 422
}
}
}
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Error": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Human-readable error message"
},
"code": {
"type": "string",
"description": "Error code"
},
"data": {
"type": "object",
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
}
}
}
}
}
},
"securitySchemes": {
"ApplicationPasswords": {
"type": "apiKey",
"in": "header",
"name": "Authorization",
"description": "WordPress Application Passwords — use Basic auth with your WordPress username and an application password in the format: username:application_password"
}
}
}
}
Loading