diff --git a/docs/apps/components/external-product-catalog.md b/docs/apps/components/external-product-catalog.md index f3b85708..dd448ce9 100644 --- a/docs/apps/components/external-product-catalog.md +++ b/docs/apps/components/external-product-catalog.md @@ -2,6 +2,7 @@ title: External Product Catalog hide_title: true sidebar_position: 7 +description: "Integrate an external product catalog with epilot by adding an External Product Catalog component to your App and configuring its hooks in the component editor." ---

External Product Catalog

diff --git a/docs/apps/components/overview.md b/docs/apps/components/overview.md index 388f1366..c896d39e 100644 --- a/docs/apps/components/overview.md +++ b/docs/apps/components/overview.md @@ -2,6 +2,7 @@ title: Overview hide_title: true sidebar_position: 1 +description: "Components are the building blocks of every epilot App. Each component type extends a specific part of the platform, such as entity pages, journeys, portals or flows." ---

 

diff --git a/docs/apps/components/portal-extension.md b/docs/apps/components/portal-extension.md index f3dd3467..87812855 100644 --- a/docs/apps/components/portal-extension.md +++ b/docs/apps/components/portal-extension.md @@ -2,6 +2,7 @@ title: Portal Extensions hide_title: true sidebar_position: 6 +description: "Extend epilot portals with custom functionality and third-party integrations, from seamless links to hooks for data retrieval, validation and export." ---

Portal Extensions

diff --git a/docs/apps/functions/deploy-and-update.md b/docs/apps/functions/deploy-and-update.md index c2cfa7a8..0daa0f37 100644 --- a/docs/apps/functions/deploy-and-update.md +++ b/docs/apps/functions/deploy-and-update.md @@ -2,6 +2,7 @@ title: Deploying & Updating hide_title: true sidebar_position: 5 +description: "Add, deploy and update App functions with the epilot CLI: scaffold workflow or scheduled functions, deploy them and learn how updates reach installations." --- # Deploying & Updating Functions diff --git a/docs/apps/how-to-guides/build-a-custom-jb.md b/docs/apps/how-to-guides/build-a-custom-jb.md index 3b2e1e71..acebea95 100644 --- a/docs/apps/how-to-guides/build-a-custom-jb.md +++ b/docs/apps/how-to-guides/build-a-custom-jb.md @@ -2,6 +2,7 @@ title: "How to build a custom Journey block" hide_title: true sidebar_position: 1 +description: "Step-by-step guide to building a custom Journey block as an epilot App: a block that shows the address entered in the journey as a marker on an OpenStreetMap map." --- ## How to build a custom Journey block diff --git a/docs/apps/overview.md b/docs/apps/overview.md index 94a139de..ba3c49b1 100644 --- a/docs/apps/overview.md +++ b/docs/apps/overview.md @@ -10,7 +10,7 @@ import DocCards from '@site/src/components/DocCards'; # Build Apps for epilot -epilot is the Energy XRM that Apps extend. Add custom UI to entity pages, journeys, and portals, run your own code inside flows, and connect external systems — then install your App privately or publish it to the epilot Marketplace. +epilot is the energy XRM that Apps extend. Add custom UI to entity pages, journeys, and portals, run your own code inside flows, and connect external systems — then install your App privately or publish it to the epilot Marketplace. ## Get started diff --git a/docs/audit-logs.md b/docs/audit-logs.md index bd805d21..e64386a6 100644 --- a/docs/audit-logs.md +++ b/docs/audit-logs.md @@ -1,5 +1,6 @@ --- sidebar_position: 14 +description: "Audit logs are a tamper-resistant record of who did what, when and on which resource in your epilot organization, for security reviews, compliance and troubleshooting." --- # Audit Logs diff --git a/docs/auth/access-tokens.md b/docs/auth/access-tokens.md index 229b842e..c403933b 100644 --- a/docs/auth/access-tokens.md +++ b/docs/auth/access-tokens.md @@ -1,5 +1,6 @@ --- sidebar_position: 2 +description: "Authorize epilot API calls with Access Tokens: create, restrict (read-only or anonymized), use and revoke tokens for integrations and scripts." --- # Access Tokens diff --git a/docs/auth/anonymization.md b/docs/auth/anonymization.md index a6815e2e..e9eeb20b 100644 --- a/docs/auth/anonymization.md +++ b/docs/auth/anonymization.md @@ -1,6 +1,7 @@ --- sidebar_position: 2.5 title: PII Anonymization +description: "epilot can mask personal data (PII) in API responses so AI assistants, analytics and integrations get the shape and relations of your data without personal identifiers." --- # PII Anonymization diff --git a/docs/auth/permissions.md b/docs/auth/permissions.md index d233b9bb..e4673ab5 100644 --- a/docs/auth/permissions.md +++ b/docs/auth/permissions.md @@ -1,5 +1,6 @@ --- sidebar_position: 4 +description: "epilot permissions use role-based access control (RBAC) with attribute-based conditions, inspired by AWS IAM policies, for fine-grained control by role, resource and attribute." --- # Permissions diff --git a/docs/automation/architecture.md b/docs/automation/architecture.md index ab2c9fa1..116ffda5 100644 --- a/docs/automation/architecture.md +++ b/docs/automation/architecture.md @@ -1,5 +1,6 @@ --- sidebar_position: 10 +description: "How the epilot automation engine works: a serverless, event-driven pipeline on AWS Lambda, DynamoDB, EventBridge and SQS that matches entity events to flows and runs their actions." --- # Architecture diff --git a/docs/automation/automation-executions.md b/docs/automation/automation-executions.md index f23155a6..f8321469 100644 --- a/docs/automation/automation-executions.md +++ b/docs/automation/automation-executions.md @@ -1,5 +1,6 @@ --- sidebar_position: 3 +description: "Every time an Automation Flow is triggered, epilot creates an Automation Execution. Learn how executions run their actions and which execution statuses exist." --- # Automation Executions diff --git a/docs/automation/automation-flows.md b/docs/automation/automation-flows.md index e2b1d97b..5ef566e4 100644 --- a/docs/automation/automation-flows.md +++ b/docs/automation/automation-flows.md @@ -1,5 +1,6 @@ --- sidebar_position: 2 +description: "Automation Flows are epilot's automation configurations: the triggers that start them and the actions they run on entities." --- # Automation Flows diff --git a/docs/automation/entity-mapping.md b/docs/automation/entity-mapping.md index da00d399..5613b100 100644 --- a/docs/automation/entity-mapping.md +++ b/docs/automation/entity-mapping.md @@ -1,5 +1,6 @@ --- sidebar_position: 4 +description: "Use the Create/Edit Entity (Advanced) automation action to map data from one entity into new or existing entities, with attribute mappings and mapping operations." --- # Entity Mapping diff --git a/docs/automation/event-catalog-trigger.md b/docs/automation/event-catalog-trigger.md index b50ad1f8..329f40b5 100644 --- a/docs/automation/event-catalog-trigger.md +++ b/docs/automation/event-catalog-trigger.md @@ -1,6 +1,7 @@ --- sidebar_position: 5 title: Event Catalog Trigger +description: "The Event Catalog trigger starts an Automation Flow whenever a Core Event, such as CustomerRequestSubmitted or MeterReadingAdded, is published in your organization." --- # Event Catalog Trigger diff --git a/docs/automation/intro.md b/docs/automation/intro.md index e365f508..044b8724 100644 --- a/docs/automation/intro.md +++ b/docs/automation/intro.md @@ -1,6 +1,7 @@ --- title: Overview sidebar_position: 1 +description: "epilot automation is a general-purpose framework for executing actions on entities in response to events." --- # Automation diff --git a/docs/blueprints/editing-and-synchronizing.md b/docs/blueprints/editing-and-synchronizing.md index c0bc7531..56a7e670 100644 --- a/docs/blueprints/editing-and-synchronizing.md +++ b/docs/blueprints/editing-and-synchronizing.md @@ -2,6 +2,7 @@ sidebar_position: 3 title: Editing and synchronizing hide_title: true +description: "Edit a Blueprint in the Blueprint overview (rename it, add or remove resources, download or delete it) and synchronize it with another organization." --- ## Editing Blueprints diff --git a/docs/blueprints/installing-a-blueprint.md b/docs/blueprints/installing-a-blueprint.md index 4f737ab9..6e282af3 100644 --- a/docs/blueprints/installing-a-blueprint.md +++ b/docs/blueprints/installing-a-blueprint.md @@ -2,6 +2,7 @@ sidebar_position: 2 title: Installing a Blueprint hide_title: true +description: "Install a Blueprint from the epilot Marketplace with a one-click or advanced install, configure it after installation, or create your own custom Blueprint." --- diff --git a/docs/blueprints/intro.md b/docs/blueprints/intro.md index 8a5b4750..7914da21 100644 --- a/docs/blueprints/intro.md +++ b/docs/blueprints/intro.md @@ -1,6 +1,7 @@ --- title: Blueprints sidebar_position: 1 +description: "Blueprints from the epilot Marketplace bundle journeys, automations, entity schemas, templates and more, so companies can launch energy use cases in a few clicks." --- # Blueprints diff --git a/docs/blueprints/sandboxes.md b/docs/blueprints/sandboxes.md index b42d501a..92dfd043 100644 --- a/docs/blueprints/sandboxes.md +++ b/docs/blueprints/sandboxes.md @@ -1,6 +1,7 @@ --- sidebar_position: 5 title: Sandboxes +description: "A Sandbox is a separate epilot organization for safely testing configurations without affecting production. Validated changes can be promoted to production." --- # Sandboxes diff --git a/docs/blueprints/supported-resources.md b/docs/blueprints/supported-resources.md index 61a10104..ccc0bf00 100644 --- a/docs/blueprints/supported-resources.md +++ b/docs/blueprints/supported-resources.md @@ -1,6 +1,7 @@ --- sidebar_position: 10 title: Supported Resources +description: "Resource types that Blueprints support, each corresponding to a ResourceNodeType in the Blueprint Manifest API." --- # Supported Resources diff --git a/docs/cli/commands/access-token.md b/docs/cli/commands/access-token.md index 57959cd4..a48020ed 100644 --- a/docs/cli/commands/access-token.md +++ b/docs/cli/commands/access-token.md @@ -1,5 +1,6 @@ --- title: "Access Token API" +description: "epilot CLI commands for the Access Token API: quick start, common flags and every operation, callable from the command line." --- # Access Token API diff --git a/docs/cli/commands/address-suggestions.md b/docs/cli/commands/address-suggestions.md index 862636d6..f532bd47 100644 --- a/docs/cli/commands/address-suggestions.md +++ b/docs/cli/commands/address-suggestions.md @@ -1,5 +1,6 @@ --- title: "Address Suggestions API" +description: "epilot CLI commands for the Address Suggestions API: quick start, common flags and every operation, callable from the command line." --- # Address Suggestions API diff --git a/docs/cli/commands/address.md b/docs/cli/commands/address.md index dd1c6d7e..d1e47a5f 100644 --- a/docs/cli/commands/address.md +++ b/docs/cli/commands/address.md @@ -1,5 +1,6 @@ --- title: "Address API" +description: "epilot CLI commands for the Address API: quick start, common flags and every operation, callable from the command line." --- # Address API diff --git a/docs/cli/commands/ai-agents.md b/docs/cli/commands/ai-agents.md index c4088501..3e96d72b 100644 --- a/docs/cli/commands/ai-agents.md +++ b/docs/cli/commands/ai-agents.md @@ -1,5 +1,6 @@ --- title: "AI Agents API - OpenAPI 3.0" +description: "epilot CLI commands for the AI Agents API - OpenAPI 3.0: quick start, common flags and every operation, callable from the command line." --- # AI Agents API - OpenAPI 3.0 diff --git a/docs/cli/commands/app.md b/docs/cli/commands/app.md index 772a488c..0f54788b 100644 --- a/docs/cli/commands/app.md +++ b/docs/cli/commands/app.md @@ -1,5 +1,6 @@ --- title: "App API" +description: "epilot CLI commands for the App API: quick start, common flags and every operation, callable from the command line." --- # App API diff --git a/docs/cli/commands/audit-logs.md b/docs/cli/commands/audit-logs.md index 0dccb047..b0296e98 100644 --- a/docs/cli/commands/audit-logs.md +++ b/docs/cli/commands/audit-logs.md @@ -1,5 +1,6 @@ --- title: "Audit Log" +description: "epilot CLI commands for the Audit Log: quick start, common flags and every operation, callable from the command line." --- # Audit Log diff --git a/docs/cli/commands/automation.md b/docs/cli/commands/automation.md index b9b4c596..ea57af45 100644 --- a/docs/cli/commands/automation.md +++ b/docs/cli/commands/automation.md @@ -1,5 +1,6 @@ --- title: "Automation API" +description: "epilot CLI commands for the Automation API: quick start, common flags and every operation, callable from the command line." --- # Automation API diff --git a/docs/cli/commands/billing.md b/docs/cli/commands/billing.md index 5f0998e0..c3311321 100644 --- a/docs/cli/commands/billing.md +++ b/docs/cli/commands/billing.md @@ -1,5 +1,6 @@ --- title: "Billing API" +description: "epilot CLI commands for the Billing API: quick start, common flags and every operation, callable from the command line." --- # Billing API diff --git a/docs/cli/commands/blueprint-manifest.md b/docs/cli/commands/blueprint-manifest.md index 1188289e..887ebea7 100644 --- a/docs/cli/commands/blueprint-manifest.md +++ b/docs/cli/commands/blueprint-manifest.md @@ -1,5 +1,6 @@ --- title: "Blueprint Manifest API" +description: "epilot CLI commands for the Blueprint Manifest API: quick start, common flags and every operation, callable from the command line." --- # Blueprint Manifest API diff --git a/docs/cli/commands/consent.md b/docs/cli/commands/consent.md index 0483f03c..aa4120ed 100644 --- a/docs/cli/commands/consent.md +++ b/docs/cli/commands/consent.md @@ -1,5 +1,6 @@ --- title: "Consent API" +description: "epilot CLI commands for the Consent API: quick start, common flags and every operation, callable from the command line." --- # Consent API diff --git a/docs/cli/commands/customer-portal.md b/docs/cli/commands/customer-portal.md index 4b40d43b..2c79b2f8 100644 --- a/docs/cli/commands/customer-portal.md +++ b/docs/cli/commands/customer-portal.md @@ -1,5 +1,6 @@ --- title: "Portal API" +description: "epilot CLI commands for the Portal API: quick start, common flags and every operation, callable from the command line." --- # Portal API diff --git a/docs/cli/commands/dashboard.md b/docs/cli/commands/dashboard.md index 18249900..5ce637bf 100644 --- a/docs/cli/commands/dashboard.md +++ b/docs/cli/commands/dashboard.md @@ -1,5 +1,6 @@ --- title: "Dashboard API" +description: "epilot CLI commands for the Dashboard API: quick start, common flags and every operation, callable from the command line." --- # Dashboard API diff --git a/docs/cli/commands/data-governance.md b/docs/cli/commands/data-governance.md index fd75126a..fd628c21 100644 --- a/docs/cli/commands/data-governance.md +++ b/docs/cli/commands/data-governance.md @@ -1,5 +1,6 @@ --- title: "Data Governance API" +description: "epilot CLI commands for the Data Governance API: quick start, common flags and every operation, callable from the command line." --- # Data Governance API diff --git a/docs/cli/commands/deduplication.md b/docs/cli/commands/deduplication.md index 55d2d723..9559578b 100644 --- a/docs/cli/commands/deduplication.md +++ b/docs/cli/commands/deduplication.md @@ -1,5 +1,6 @@ --- title: "Deduplication API" +description: "epilot CLI commands for the Deduplication API: quick start, common flags and every operation, callable from the command line." --- # Deduplication API diff --git a/docs/cli/commands/design.md b/docs/cli/commands/design.md index a9cf4f8f..6ede275d 100644 --- a/docs/cli/commands/design.md +++ b/docs/cli/commands/design.md @@ -1,5 +1,6 @@ --- title: "Design Builder API v2" +description: "epilot CLI commands for the Design Builder API v2: quick start, common flags and every operation, callable from the command line." --- # Design Builder API v2 diff --git a/docs/cli/commands/document.md b/docs/cli/commands/document.md index c7cf71f6..12959b46 100644 --- a/docs/cli/commands/document.md +++ b/docs/cli/commands/document.md @@ -1,5 +1,6 @@ --- title: "Document API" +description: "epilot CLI commands for the Document API: quick start, common flags and every operation, callable from the command line." --- # Document API diff --git a/docs/cli/commands/email-settings.md b/docs/cli/commands/email-settings.md index 3c63c949..4be55080 100644 --- a/docs/cli/commands/email-settings.md +++ b/docs/cli/commands/email-settings.md @@ -1,5 +1,6 @@ --- title: "Messaging Settings API" +description: "epilot CLI commands for the Messaging Settings API: quick start, common flags and every operation, callable from the command line." --- # Messaging Settings API diff --git a/docs/cli/commands/email-template.md b/docs/cli/commands/email-template.md index 7a3812cd..382b07a7 100644 --- a/docs/cli/commands/email-template.md +++ b/docs/cli/commands/email-template.md @@ -1,5 +1,6 @@ --- title: "Email template API" +description: "epilot CLI commands for the Email template API: quick start, common flags and every operation, callable from the command line." --- # Email template API diff --git a/docs/cli/commands/entity-mapping.md b/docs/cli/commands/entity-mapping.md index a978b9c3..18ac771f 100644 --- a/docs/cli/commands/entity-mapping.md +++ b/docs/cli/commands/entity-mapping.md @@ -1,5 +1,6 @@ --- title: "Entity Mapping API" +description: "epilot CLI commands for the Entity Mapping API: quick start, common flags and every operation, callable from the command line." --- # Entity Mapping API diff --git a/docs/cli/commands/entity.md b/docs/cli/commands/entity.md index 8e2f2b99..43ee3730 100644 --- a/docs/cli/commands/entity.md +++ b/docs/cli/commands/entity.md @@ -1,5 +1,6 @@ --- title: "Entity API" +description: "epilot CLI commands for the Entity API: quick start, common flags and every operation, callable from the command line." --- # Entity API diff --git a/docs/cli/commands/environments.md b/docs/cli/commands/environments.md index 66e973ef..471e861d 100644 --- a/docs/cli/commands/environments.md +++ b/docs/cli/commands/environments.md @@ -1,5 +1,6 @@ --- title: "Environments API" +description: "epilot CLI commands for the Environments API: quick start, common flags and every operation, callable from the command line." --- # Environments API diff --git a/docs/cli/commands/erp-integration.md b/docs/cli/commands/erp-integration.md index 8df16c36..cfbce798 100644 --- a/docs/cli/commands/erp-integration.md +++ b/docs/cli/commands/erp-integration.md @@ -1,5 +1,6 @@ --- title: "ERP Integration API" +description: "epilot CLI commands for the ERP Integration API: quick start, common flags and every operation, callable from the command line." --- # ERP Integration API diff --git a/docs/cli/commands/event-catalog.md b/docs/cli/commands/event-catalog.md index 179eb2f7..a7dbb730 100644 --- a/docs/cli/commands/event-catalog.md +++ b/docs/cli/commands/event-catalog.md @@ -1,5 +1,6 @@ --- title: "Event Catalog API" +description: "epilot CLI commands for the Event Catalog API: quick start, common flags and every operation, callable from the command line." --- # Event Catalog API diff --git a/docs/cli/commands/file.md b/docs/cli/commands/file.md index 1f910fa6..93c3b94a 100644 --- a/docs/cli/commands/file.md +++ b/docs/cli/commands/file.md @@ -1,5 +1,6 @@ --- title: "File API" +description: "epilot CLI commands for the File API: quick start, common flags and every operation, callable from the command line." --- # File API diff --git a/docs/cli/commands/iban.md b/docs/cli/commands/iban.md index b4378bc6..05166fec 100644 --- a/docs/cli/commands/iban.md +++ b/docs/cli/commands/iban.md @@ -1,5 +1,6 @@ --- title: "Iban API" +description: "epilot CLI commands for the Iban API: quick start, common flags and every operation, callable from the command line." --- # Iban API diff --git a/docs/cli/commands/journey.md b/docs/cli/commands/journey.md index 865b8f9d..6b8d3e5c 100644 --- a/docs/cli/commands/journey.md +++ b/docs/cli/commands/journey.md @@ -1,5 +1,6 @@ --- title: "Journey API" +description: "epilot CLI commands for the Journey API: quick start, common flags and every operation, callable from the command line." --- # Journey API diff --git a/docs/cli/commands/kanban.md b/docs/cli/commands/kanban.md index f9085681..5a6e0ec3 100644 --- a/docs/cli/commands/kanban.md +++ b/docs/cli/commands/kanban.md @@ -1,5 +1,6 @@ --- title: "Kanban API" +description: "epilot CLI commands for the Kanban API: quick start, common flags and every operation, callable from the command line." --- # Kanban API diff --git a/docs/cli/commands/message.md b/docs/cli/commands/message.md index 71dd4837..a8323ea7 100644 --- a/docs/cli/commands/message.md +++ b/docs/cli/commands/message.md @@ -1,5 +1,6 @@ --- title: "Message API" +description: "epilot CLI commands for the Message API: quick start, common flags and every operation, callable from the command line." --- # Message API diff --git a/docs/cli/commands/metering.md b/docs/cli/commands/metering.md index a33f0c35..8b1be534 100644 --- a/docs/cli/commands/metering.md +++ b/docs/cli/commands/metering.md @@ -1,5 +1,6 @@ --- title: "Metering API" +description: "epilot CLI commands for the Metering API: quick start, common flags and every operation, callable from the command line." --- # Metering API diff --git a/docs/cli/commands/notes.md b/docs/cli/commands/notes.md index 27d9980c..aaa84fec 100644 --- a/docs/cli/commands/notes.md +++ b/docs/cli/commands/notes.md @@ -1,5 +1,6 @@ --- title: "Notes API" +description: "epilot CLI commands for the Notes API: quick start, common flags and every operation, callable from the command line." --- # Notes API diff --git a/docs/cli/commands/notification.md b/docs/cli/commands/notification.md index 35289a9e..04d58854 100644 --- a/docs/cli/commands/notification.md +++ b/docs/cli/commands/notification.md @@ -1,5 +1,6 @@ --- title: "Notification API" +description: "epilot CLI commands for the Notification API: quick start, common flags and every operation, callable from the command line." --- # Notification API diff --git a/docs/cli/commands/organization.md b/docs/cli/commands/organization.md index 40322060..ec92a8c3 100644 --- a/docs/cli/commands/organization.md +++ b/docs/cli/commands/organization.md @@ -1,5 +1,6 @@ --- title: "Organization API" +description: "epilot CLI commands for the Organization API: quick start, common flags and every operation, callable from the command line." --- # Organization API diff --git a/docs/cli/commands/partner-directory.md b/docs/cli/commands/partner-directory.md index 976c4c1f..d7a0f267 100644 --- a/docs/cli/commands/partner-directory.md +++ b/docs/cli/commands/partner-directory.md @@ -1,5 +1,6 @@ --- title: "Partner API" +description: "epilot CLI commands for the Partner API: quick start, common flags and every operation, callable from the command line." --- # Partner API diff --git a/docs/cli/commands/permissions.md b/docs/cli/commands/permissions.md index 33b4d01a..27742fa4 100644 --- a/docs/cli/commands/permissions.md +++ b/docs/cli/commands/permissions.md @@ -1,5 +1,6 @@ --- title: "Permissions API" +description: "epilot CLI commands for the Permissions API: quick start, common flags and every operation, callable from the command line." --- # Permissions API diff --git a/docs/cli/commands/pricing-tier.md b/docs/cli/commands/pricing-tier.md index bbd5a478..70ae33a6 100644 --- a/docs/cli/commands/pricing-tier.md +++ b/docs/cli/commands/pricing-tier.md @@ -1,5 +1,6 @@ --- title: "Pricing Tier API" +description: "epilot CLI commands for the Pricing Tier API: quick start, common flags and every operation, callable from the command line." --- # Pricing Tier API diff --git a/docs/cli/commands/pricing.md b/docs/cli/commands/pricing.md index 503969d0..33457b9c 100644 --- a/docs/cli/commands/pricing.md +++ b/docs/cli/commands/pricing.md @@ -1,5 +1,6 @@ --- title: "Pricing API" +description: "epilot CLI commands for the Pricing API: quick start, common flags and every operation, callable from the command line." --- # Pricing API diff --git a/docs/cli/commands/purpose.md b/docs/cli/commands/purpose.md index 176b9fbd..73ef9c08 100644 --- a/docs/cli/commands/purpose.md +++ b/docs/cli/commands/purpose.md @@ -1,5 +1,6 @@ --- title: "Purpose API" +description: "epilot CLI commands for the Purpose API: quick start, common flags and every operation, callable from the command line." --- # Purpose API diff --git a/docs/cli/commands/sandbox.md b/docs/cli/commands/sandbox.md index 5aa2dbf8..2a95d570 100644 --- a/docs/cli/commands/sandbox.md +++ b/docs/cli/commands/sandbox.md @@ -1,5 +1,6 @@ --- title: "Sandbox API" +description: "epilot CLI commands for the Sandbox API: quick start, common flags and every operation, callable from the command line." --- # Sandbox API diff --git a/docs/cli/commands/submission.md b/docs/cli/commands/submission.md index f474650b..1953285c 100644 --- a/docs/cli/commands/submission.md +++ b/docs/cli/commands/submission.md @@ -1,5 +1,6 @@ --- title: "Submission API" +description: "epilot CLI commands for the Submission API: quick start, common flags and every operation, callable from the command line." --- # Submission API diff --git a/docs/cli/commands/targeting.md b/docs/cli/commands/targeting.md index 9c280a62..b2575166 100644 --- a/docs/cli/commands/targeting.md +++ b/docs/cli/commands/targeting.md @@ -1,5 +1,6 @@ --- title: "Targeting API" +description: "epilot CLI commands for the Targeting API: quick start, common flags and every operation, callable from the command line." --- # Targeting API diff --git a/docs/cli/commands/template-variables.md b/docs/cli/commands/template-variables.md index ffb046d6..621dd4b6 100644 --- a/docs/cli/commands/template-variables.md +++ b/docs/cli/commands/template-variables.md @@ -1,5 +1,6 @@ --- title: "Template Variables API" +description: "epilot CLI commands for the Template Variables API: quick start, common flags and every operation, callable from the command line." --- # Template Variables API diff --git a/docs/cli/commands/user.md b/docs/cli/commands/user.md index c4762b49..55a883aa 100644 --- a/docs/cli/commands/user.md +++ b/docs/cli/commands/user.md @@ -1,5 +1,6 @@ --- title: "User API" +description: "epilot CLI commands for the User API: quick start, common flags and every operation, callable from the command line." --- # User API diff --git a/docs/cli/commands/validation-rules.md b/docs/cli/commands/validation-rules.md index 5faff186..98f9173f 100644 --- a/docs/cli/commands/validation-rules.md +++ b/docs/cli/commands/validation-rules.md @@ -1,5 +1,6 @@ --- title: "Validation Rules API" +description: "epilot CLI commands for the Validation Rules API: quick start, common flags and every operation, callable from the command line." --- # Validation Rules API diff --git a/docs/cli/commands/webhooks.md b/docs/cli/commands/webhooks.md index 5a17e7c0..2479271e 100644 --- a/docs/cli/commands/webhooks.md +++ b/docs/cli/commands/webhooks.md @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "epilot CLI commands for the Webhooks: quick start, common flags and every operation, callable from the command line." --- # Webhooks diff --git a/docs/cli/commands/workflow-definition.md b/docs/cli/commands/workflow-definition.md index a52a6cde..671d14f9 100644 --- a/docs/cli/commands/workflow-definition.md +++ b/docs/cli/commands/workflow-definition.md @@ -1,5 +1,6 @@ --- title: "Workflows Definitions" +description: "epilot CLI commands for the Workflows Definitions: quick start, common flags and every operation, callable from the command line." --- # Workflows Definitions diff --git a/docs/cli/commands/workflow.md b/docs/cli/commands/workflow.md index 75ac26c9..20d704b8 100644 --- a/docs/cli/commands/workflow.md +++ b/docs/cli/commands/workflow.md @@ -1,5 +1,6 @@ --- title: "Workflows Executions" +description: "epilot CLI commands for the Workflows Executions: quick start, common flags and every operation, callable from the command line." --- # Workflows Executions diff --git a/docs/cli/overview.md b/docs/cli/overview.md index c3550ae7..14fb83d7 100644 --- a/docs/cli/overview.md +++ b/docs/cli/overview.md @@ -1,6 +1,7 @@ --- sidebar_position: 1 title: Overview +description: "The epilot CLI calls any epilot API operation with one command, no SDK setup or boilerplate needed: just run npx epilot." --- # epilot CLI @@ -299,56 +300,56 @@ epilot completion fish ## API Commands -Per-API command reference with all operations, parameters, and sample calls. See the [API Commands](commands/entity) section in the sidebar, or browse the table below. +Per-API command reference with all operations, parameters, and sample calls. See the [API Commands](commands/entity.md) section in the sidebar, or browse the table below. | API | Command | Reference | | --- | ------- | --------- | -| Access Token API | `epilot access-token` | [reference](commands/access-token) | -| Address Suggestions API | `epilot address-suggestions` | [reference](commands/address-suggestions) | -| Address API | `epilot address` | [reference](commands/address) | -| AI Agents API - OpenAPI 3.0 | `epilot ai-agents` | [reference](commands/ai-agents) | -| App API | `epilot app` | [reference](commands/app) | -| Audit Log | `epilot audit-logs` | [reference](commands/audit-logs) | -| Automation API | `epilot automation` | [reference](commands/automation) | -| Billing API | `epilot billing` | [reference](commands/billing) | -| Blueprint Manifest API | `epilot blueprint-manifest` | [reference](commands/blueprint-manifest) | -| Consent API | `epilot consent` | [reference](commands/consent) | -| Portal API | `epilot customer-portal` | [reference](commands/customer-portal) | -| Dashboard API | `epilot dashboard` | [reference](commands/dashboard) | -| Data Governance API | `epilot data-governance` | [reference](commands/data-governance) | -| Deduplication API | `epilot deduplication` | [reference](commands/deduplication) | -| Design Builder API v2 | `epilot design` | [reference](commands/design) | -| Document API | `epilot document` | [reference](commands/document) | -| Messaging Settings API | `epilot email-settings` | [reference](commands/email-settings) | -| Email template API | `epilot email-template` | [reference](commands/email-template) | -| Entity Mapping API | `epilot entity-mapping` | [reference](commands/entity-mapping) | -| Entity API | `epilot entity` | [reference](commands/entity) | -| Environments API | `epilot environments` | [reference](commands/environments) | -| ERP Integration API | `epilot erp-integration` | [reference](commands/erp-integration) | -| Event Catalog API | `epilot event-catalog` | [reference](commands/event-catalog) | -| File API | `epilot file` | [reference](commands/file) | -| Iban API | `epilot iban` | [reference](commands/iban) | -| Journey API | `epilot journey` | [reference](commands/journey) | -| Kanban API | `epilot kanban` | [reference](commands/kanban) | -| Message API | `epilot message` | [reference](commands/message) | -| Metering API | `epilot metering` | [reference](commands/metering) | -| Notes API | `epilot notes` | [reference](commands/notes) | -| Notification API | `epilot notification` | [reference](commands/notification) | -| Organization API | `epilot organization` | [reference](commands/organization) | -| Partner API | `epilot partner-directory` | [reference](commands/partner-directory) | -| Permissions API | `epilot permissions` | [reference](commands/permissions) | -| Pricing Tier API | `epilot pricing-tier` | [reference](commands/pricing-tier) | -| Pricing API | `epilot pricing` | [reference](commands/pricing) | -| Purpose API | `epilot purpose` | [reference](commands/purpose) | -| Sandbox API | `epilot sandbox` | [reference](commands/sandbox) | -| Submission API | `epilot submission` | [reference](commands/submission) | -| Targeting API | `epilot targeting` | [reference](commands/targeting) | -| Template Variables API | `epilot template-variables` | [reference](commands/template-variables) | -| User API | `epilot user` | [reference](commands/user) | -| Validation Rules API | `epilot validation-rules` | [reference](commands/validation-rules) | -| Webhooks | `epilot webhooks` | [reference](commands/webhooks) | -| Workflows Definitions | `epilot workflow-definition` | [reference](commands/workflow-definition) | -| Workflows Executions | `epilot workflow` | [reference](commands/workflow) | +| Access Token API | `epilot access-token` | [reference](commands/access-token.md) | +| Address Suggestions API | `epilot address-suggestions` | [reference](commands/address-suggestions.md) | +| Address API | `epilot address` | [reference](commands/address.md) | +| AI Agents API - OpenAPI 3.0 | `epilot ai-agents` | [reference](commands/ai-agents.md) | +| App API | `epilot app` | [reference](commands/app.md) | +| Audit Log | `epilot audit-logs` | [reference](commands/audit-logs.md) | +| Automation API | `epilot automation` | [reference](commands/automation.md) | +| Billing API | `epilot billing` | [reference](commands/billing.md) | +| Blueprint Manifest API | `epilot blueprint-manifest` | [reference](commands/blueprint-manifest.md) | +| Consent API | `epilot consent` | [reference](commands/consent.md) | +| Portal API | `epilot customer-portal` | [reference](commands/customer-portal.md) | +| Dashboard API | `epilot dashboard` | [reference](commands/dashboard.md) | +| Data Governance API | `epilot data-governance` | [reference](commands/data-governance.md) | +| Deduplication API | `epilot deduplication` | [reference](commands/deduplication.md) | +| Design Builder API v2 | `epilot design` | [reference](commands/design.md) | +| Document API | `epilot document` | [reference](commands/document.md) | +| Messaging Settings API | `epilot email-settings` | [reference](commands/email-settings.md) | +| Email template API | `epilot email-template` | [reference](commands/email-template.md) | +| Entity Mapping API | `epilot entity-mapping` | [reference](commands/entity-mapping.md) | +| Entity API | `epilot entity` | [reference](commands/entity.md) | +| Environments API | `epilot environments` | [reference](commands/environments.md) | +| ERP Integration API | `epilot erp-integration` | [reference](commands/erp-integration.md) | +| Event Catalog API | `epilot event-catalog` | [reference](commands/event-catalog.md) | +| File API | `epilot file` | [reference](commands/file.md) | +| Iban API | `epilot iban` | [reference](commands/iban.md) | +| Journey API | `epilot journey` | [reference](commands/journey.md) | +| Kanban API | `epilot kanban` | [reference](commands/kanban.md) | +| Message API | `epilot message` | [reference](commands/message.md) | +| Metering API | `epilot metering` | [reference](commands/metering.md) | +| Notes API | `epilot notes` | [reference](commands/notes.md) | +| Notification API | `epilot notification` | [reference](commands/notification.md) | +| Organization API | `epilot organization` | [reference](commands/organization.md) | +| Partner API | `epilot partner-directory` | [reference](commands/partner-directory.md) | +| Permissions API | `epilot permissions` | [reference](commands/permissions.md) | +| Pricing Tier API | `epilot pricing-tier` | [reference](commands/pricing-tier.md) | +| Pricing API | `epilot pricing` | [reference](commands/pricing.md) | +| Purpose API | `epilot purpose` | [reference](commands/purpose.md) | +| Sandbox API | `epilot sandbox` | [reference](commands/sandbox.md) | +| Submission API | `epilot submission` | [reference](commands/submission.md) | +| Targeting API | `epilot targeting` | [reference](commands/targeting.md) | +| Template Variables API | `epilot template-variables` | [reference](commands/template-variables.md) | +| User API | `epilot user` | [reference](commands/user.md) | +| Validation Rules API | `epilot validation-rules` | [reference](commands/validation-rules.md) | +| Webhooks | `epilot webhooks` | [reference](commands/webhooks.md) | +| Workflows Definitions | `epilot workflow-definition` | [reference](commands/workflow-definition.md) | +| Workflows Executions | `epilot workflow` | [reference](commands/workflow.md) | diff --git a/docs/deadlines/intro.md b/docs/deadlines/intro.md index dc3cf5b9..5c4e7f2a 100644 --- a/docs/deadlines/intro.md +++ b/docs/deadlines/intro.md @@ -1,6 +1,7 @@ --- title: Switching Deadlines sidebar_position: 0 +description: "Calculate contract switching deadlines for power and gas in the German energy market, based on regulatory rules, working days and holidays, via API, SDK or a standalone library." --- # Contract Switching Deadlines diff --git a/docs/entities/attributes.md b/docs/entities/attributes.md index 2c5cfd97..cb8c436e 100644 --- a/docs/entities/attributes.md +++ b/docs/entities/attributes.md @@ -1,6 +1,7 @@ --- sidebar_position: 3 title: Attributes +description: "Attributes are the fields of an entity schema. Each one appears as a table column and as an editable field in the entity detail view. Reference of attribute types and properties." --- # Attributes diff --git a/docs/entities/capabilities.mdx b/docs/entities/capabilities.mdx index 6b4ab9b3..bdc46d0b 100644 --- a/docs/entities/capabilities.mdx +++ b/docs/entities/capabilities.mdx @@ -1,5 +1,6 @@ --- sidebar_position: 7 +description: "Capabilities extend entity views with extra functionality, such as tabs, attribute groups or action buttons, defined on a schema through UI hooks." --- # Capabilities diff --git a/docs/entities/entity-api.md b/docs/entities/entity-api.md index efff3d4c..01c5cfbf 100644 --- a/docs/entities/entity-api.md +++ b/docs/entities/entity-api.md @@ -1,5 +1,6 @@ --- sidebar_position: 5 +description: "The Entity API is the primary data layer for epilot business objects, with sub-APIs for schemas, CRUD, search, relations and activity." --- # Entity API diff --git a/docs/entities/entity-tables.md b/docs/entities/entity-tables.md index 9c3c76b9..a2957900 100644 --- a/docs/entities/entity-tables.md +++ b/docs/entities/entity-tables.md @@ -1,5 +1,6 @@ --- sidebar_position: 4 +description: "Entity tables list the entities of a schema with full-text search, attribute filters, sorting, saved views and bulk import and export." --- # Entity Tables diff --git a/docs/entities/flexible-entities.md b/docs/entities/flexible-entities.md index 632d1832..c9b1db1b 100644 --- a/docs/entities/flexible-entities.md +++ b/docs/entities/flexible-entities.md @@ -1,5 +1,6 @@ --- sidebar_position: 0 +description: "Everything in epilot is an entity: contacts, orders, products, contracts, meters, files and more. Entities are flexible JSON objects backed by user-definable schemas." --- # Flexible Entities diff --git a/docs/entities/relations.md b/docs/entities/relations.md index 1613d129..1c449699 100644 --- a/docs/entities/relations.md +++ b/docs/entities/relations.md @@ -1,5 +1,6 @@ --- sidebar_position: 6 +description: "Relations link entities to each other across epilot, regardless of schema. Covers the relation data structure, references, hydration and relation attributes." --- # Relations diff --git a/docs/entities/taxonomies.md b/docs/entities/taxonomies.md index 67b7ddd1..dbd0f5b8 100644 --- a/docs/entities/taxonomies.md +++ b/docs/entities/taxonomies.md @@ -1,6 +1,7 @@ --- title: Taxonomies sidebar_label: Taxonomies +description: "Taxonomies are epilot's labeling and classification system for entities, relations and files, managed through the Label Builder." --- # Taxonomies diff --git a/docs/environments/environments-secrets.md b/docs/environments/environments-secrets.md index 90dd51ab..5a52ddfd 100644 --- a/docs/environments/environments-secrets.md +++ b/docs/environments/environments-secrets.md @@ -1,6 +1,7 @@ --- title: Environments & Secrets sidebar_position: 1 +description: "Environments & Secrets is an organization-level key-value store for configuration and credentials that you reference anywhere with {{ env.variable_key }} syntax." --- # Environments & Secrets diff --git a/docs/files/document-generation.md b/docs/files/document-generation.md index ac98b5a3..2468d936 100644 --- a/docs/files/document-generation.md +++ b/docs/files/document-generation.md @@ -1,5 +1,6 @@ --- sidebar_position: 3 +description: "The Document Generation API creates documents from templates with variable substitution, image embedding, Excel output and asynchronous jobs." --- # Document Generation diff --git a/docs/files/file-api.md b/docs/files/file-api.md index bd4a9358..22e0d09c 100644 --- a/docs/files/file-api.md +++ b/docs/files/file-api.md @@ -1,5 +1,6 @@ --- sidebar_position: 2 +description: "Upload and download files in epilot with the File API, step by step: request upload and download URLs, transfer the file and save it as a File entity." --- # File API diff --git a/docs/files/file-collections.md b/docs/files/file-collections.md index a6f8de8a..4020d263 100644 --- a/docs/files/file-collections.md +++ b/docs/files/file-collections.md @@ -1,5 +1,6 @@ --- sidebar_position: 3 +description: "File Collections group and organize files within entities. They come in two types: shared (global) collections and personal (user) collections." --- # File Collections diff --git a/docs/files/file-entity.md b/docs/files/file-entity.md index f35e50d1..143abd8a 100644 --- a/docs/files/file-entity.md +++ b/docs/files/file-entity.md @@ -1,5 +1,6 @@ --- sidebar_position: 1 +description: "Every file uploaded to epilot is a File entity, available through the Entity API, with access control, file relations and versions." --- # File Entity diff --git a/docs/integrations/batch-api.md b/docs/integrations/batch-api.md index 28f02340..a2278ee7 100644 --- a/docs/integrations/batch-api.md +++ b/docs/integrations/batch-api.md @@ -1,6 +1,7 @@ --- sidebar_position: 5 title: Batch API +description: "The Batch API executes multiple epilot API calls in a single HTTP request and lets you retrieve the results asynchronously." --- # Batch API diff --git a/docs/integrations/webhooks/intro.md b/docs/integrations/webhooks/intro.md index caf92c85..46fc78dd 100644 --- a/docs/integrations/webhooks/intro.md +++ b/docs/integrations/webhooks/intro.md @@ -2,6 +2,7 @@ title: Overview sidebar_position: 0 slug: /integrations/webhooks +description: "Subscribe to events in your epilot organization with webhooks: epilot sends an HTTP POST request to your URL whenever an event occurs, to integrate external systems." --- # Webhooks diff --git a/docs/integrations/webhooks/monitoring.md b/docs/integrations/webhooks/monitoring.md index a9edd090..086e5e90 100644 --- a/docs/integrations/webhooks/monitoring.md +++ b/docs/integrations/webhooks/monitoring.md @@ -1,5 +1,6 @@ --- sidebar_position: 4 +description: "Monitor epilot webhooks: every webhook request is logged as an event with a success or failure status in the Webhook Events section of the webhook configuration." --- # Monitoring diff --git a/docs/integrations/webhooks/payload-structure/customization.md b/docs/integrations/webhooks/payload-structure/customization.md index 2696c8dd..787296d8 100644 --- a/docs/integrations/webhooks/payload-structure/customization.md +++ b/docs/integrations/webhooks/payload-structure/customization.md @@ -1,6 +1,7 @@ --- sidebar_position: 4 title: JSONata Customization +description: "Customize epilot webhook payloads with JSONata to reshape, filter or extract fields before delivery." --- # Customization diff --git a/docs/integrations/webhooks/payload-structure/file-delivery.md b/docs/integrations/webhooks/payload-structure/file-delivery.md index 4e12e58c..e0e04f1b 100644 --- a/docs/integrations/webhooks/payload-structure/file-delivery.md +++ b/docs/integrations/webhooks/payload-structure/file-delivery.md @@ -1,6 +1,7 @@ --- sidebar_position: 3 title: "File Data Delivery" +description: "Deliver the actual file bytes of file events, such as File Created, to your webhook endpoint as Base64 in the JSON payload or as multipart/form-data." --- # File Data Delivery diff --git a/docs/integrations/webhooks/payload-structure/intro.md b/docs/integrations/webhooks/payload-structure/intro.md index cea0ff2b..c02285ec 100644 --- a/docs/integrations/webhooks/payload-structure/intro.md +++ b/docs/integrations/webhooks/payload-structure/intro.md @@ -1,6 +1,7 @@ --- sidebar_position: 1 title: Common Data Structure +description: "Structure of epilot webhook payloads for automation and portal user access triggers: metadata, entity, relations and activity objects." --- # Payload Structure diff --git a/docs/intro.md b/docs/intro.md index 02d7949b..407631af 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -2,6 +2,7 @@ title: Overview hide_title: true sidebar_position: 1 +description: "Developer documentation for epilot, the energy XRM: architecture, entities, authentication, automation, journeys, portals, integrations, APIs and SDK." --- import AgentToolkitPromo from '@site/src/components/AgentToolkitPromo'; diff --git a/docs/journeys/journey-builder.md b/docs/journeys/journey-builder.md index 9f3537f2..5ac60d6f 100644 --- a/docs/journeys/journey-builder.md +++ b/docs/journeys/journey-builder.md @@ -1,5 +1,6 @@ --- sidebar_position: 1 +description: "The Journey Builder is a WYSIWYG editor for creating end-customer and partner journeys from steps and blocks, and for embedding them and handling submissions." --- # Journey Builder diff --git a/docs/journeys/post-qualification.md b/docs/journeys/post-qualification.md index 4218eab9..c5ff34f7 100644 --- a/docs/journeys/post-qualification.md +++ b/docs/journeys/post-qualification.md @@ -1,5 +1,6 @@ --- sidebar_position: 8 +description: "A post-qualification journey collects additional information about a lead captured by another journey, via a link sent to the contact by email." --- # Post Qualification Journey diff --git a/docs/journeys/submissions.md b/docs/journeys/submissions.md index 122fc1cf..757d73ea 100644 --- a/docs/journeys/submissions.md +++ b/docs/journeys/submissions.md @@ -1,5 +1,6 @@ --- sidebar_position: 4 +description: "Submissions are entities that store raw data collected from journeys or other external sources, created through the Submission API." --- # Submissions diff --git a/docs/messaging/email-settings.md b/docs/messaging/email-settings.md index 9ceb763d..7d9cef60 100644 --- a/docs/messaging/email-settings.md +++ b/docs/messaging/email-settings.md @@ -1,5 +1,6 @@ --- sidebar_position: 1 +description: "Send and receive email through epilot on behalf of your organization from your own custom subdomain instead of the default epilot domain." --- # Email Settings diff --git a/docs/messaging/message-api.md b/docs/messaging/message-api.md index a2f7565a..0e518d47 100644 --- a/docs/messaging/message-api.md +++ b/docs/messaging/message-api.md @@ -1,5 +1,6 @@ --- sidebar_position: 2 +description: "The Message API is epilot's central email service for sending, receiving and managing email messages within the platform." --- # Message API diff --git a/docs/messaging/outlook/security-and-privacy.md b/docs/messaging/outlook/security-and-privacy.md index 92727bc4..2825593a 100644 --- a/docs/messaging/outlook/security-and-privacy.md +++ b/docs/messaging/outlook/security-and-privacy.md @@ -1,6 +1,7 @@ --- title: Security & Privacy sidebar_position: 4 +description: "Security and privacy of the epilot Outlook integration: Microsoft Entra controls which mailboxes flow into epilot, and epilot permissions control who sees them." --- # Security & Privacy diff --git a/docs/notes/notes_api.mdx b/docs/notes/notes_api.mdx index 1a2f707d..ca7f7c2b 100644 --- a/docs/notes/notes_api.mdx +++ b/docs/notes/notes_api.mdx @@ -1,6 +1,7 @@ --- title: Notes API sidebar_position: 3 +description: "The Notes API lets developers and integration partners create, read, update and delete Note entities in epilot." --- [[API Docs](/api/notes)] [[SDK](https://www.npmjs.com/package/@epilot/notes-client)] diff --git a/docs/portals/architecture.md b/docs/portals/architecture.md index 4bf65998..a5976d90 100644 --- a/docs/portals/architecture.md +++ b/docs/portals/architecture.md @@ -1,5 +1,6 @@ --- sidebar_position: 2 +description: "Architecture of epilot Portals: multi-tenant, white-label portals with per-portal domain and authentication on a shared, serverless AWS backend." --- # Architecture diff --git a/docs/portals/customer-portal.md b/docs/portals/customer-portal.md index f6fbd337..d5b18ea6 100644 --- a/docs/portals/customer-portal.md +++ b/docs/portals/customer-portal.md @@ -1,5 +1,6 @@ --- sidebar_position: 1 +description: "epilot Portals are white-label self-service interfaces for customers and installers. Overview of what administrators configure and what end users can do." --- # Overview diff --git a/docs/portals/metering.md b/docs/portals/metering.md index 0671783a..545c8d35 100644 --- a/docs/portals/metering.md +++ b/docs/portals/metering.md @@ -1,5 +1,6 @@ --- sidebar_position: 3 +description: "The Metering API manages meters and meter readings for administrators and portal end users, with different permission scopes." --- # Metering diff --git a/docs/pricing/README.mdx b/docs/pricing/README.mdx index 351eca5b..df072e86 100644 --- a/docs/pricing/README.mdx +++ b/docs/pricing/README.mdx @@ -1,6 +1,7 @@ --- title: Overview sidebar_position: 0 +description: "epilot's pricing engine for energy and utilities covers the full commercial lifecycle: product modeling, catalogs, pricing models, taxes, coupons, orders and online checkout." --- [[API Docs](/api/pricing)] [[SDK](https://www.npmjs.com/package/@epilot/pricing-client)] | Pricing Demo Playground diff --git a/docs/sdk/clients/access-token.md b/docs/sdk/clients/access-token.md index 953e7707..82f6e4ff 100644 --- a/docs/sdk/clients/access-token.md +++ b/docs/sdk/clients/access-token.md @@ -1,5 +1,6 @@ --- title: "Access Token API" +description: "TypeScript SDK client for the epilot Access Token API: usage with @epilot/sdk, all operations and schemas." --- # Access Token API diff --git a/docs/sdk/clients/address-suggestions.md b/docs/sdk/clients/address-suggestions.md index 69f9e62e..8b724318 100644 --- a/docs/sdk/clients/address-suggestions.md +++ b/docs/sdk/clients/address-suggestions.md @@ -1,5 +1,6 @@ --- title: "Address Suggestions API" +description: "TypeScript SDK client for the epilot Address Suggestions API: usage with @epilot/sdk, all operations and schemas." --- # Address Suggestions API diff --git a/docs/sdk/clients/address.md b/docs/sdk/clients/address.md index 382f0cdf..0ed0edff 100644 --- a/docs/sdk/clients/address.md +++ b/docs/sdk/clients/address.md @@ -1,5 +1,6 @@ --- title: "Address API" +description: "TypeScript SDK client for the epilot Address API: usage with @epilot/sdk, all operations and schemas." --- # Address API diff --git a/docs/sdk/clients/ai-agents.md b/docs/sdk/clients/ai-agents.md index fb7952fe..9f76b017 100644 --- a/docs/sdk/clients/ai-agents.md +++ b/docs/sdk/clients/ai-agents.md @@ -1,5 +1,6 @@ --- title: "AI Agents API - OpenAPI 3.0" +description: "TypeScript SDK client for the epilot AI Agents API - OpenAPI 3.0: usage with @epilot/sdk, all operations and schemas." --- # AI Agents API - OpenAPI 3.0 diff --git a/docs/sdk/clients/app.md b/docs/sdk/clients/app.md index 7217812b..a90e9ad5 100644 --- a/docs/sdk/clients/app.md +++ b/docs/sdk/clients/app.md @@ -1,5 +1,6 @@ --- title: "App API" +description: "TypeScript SDK client for the epilot App API: usage with @epilot/sdk, all operations and schemas." --- # App API diff --git a/docs/sdk/clients/audit-logs.md b/docs/sdk/clients/audit-logs.md index 2f4462ab..9a111055 100644 --- a/docs/sdk/clients/audit-logs.md +++ b/docs/sdk/clients/audit-logs.md @@ -1,5 +1,6 @@ --- title: "Audit Log" +description: "TypeScript SDK client for the epilot Audit Log: usage with @epilot/sdk, all operations and schemas." --- # Audit Log diff --git a/docs/sdk/clients/automation.md b/docs/sdk/clients/automation.md index e279b5e5..18d9a5ea 100644 --- a/docs/sdk/clients/automation.md +++ b/docs/sdk/clients/automation.md @@ -1,5 +1,6 @@ --- title: "Automation API" +description: "TypeScript SDK client for the epilot Automation API: usage with @epilot/sdk, all operations and schemas." --- # Automation API diff --git a/docs/sdk/clients/billing.md b/docs/sdk/clients/billing.md index 99900cc1..9f2bcd9b 100644 --- a/docs/sdk/clients/billing.md +++ b/docs/sdk/clients/billing.md @@ -1,5 +1,6 @@ --- title: "Billing API" +description: "TypeScript SDK client for the epilot Billing API: usage with @epilot/sdk, all operations and schemas." --- # Billing API diff --git a/docs/sdk/clients/blueprint-manifest.md b/docs/sdk/clients/blueprint-manifest.md index a8deabd3..e5c027f2 100644 --- a/docs/sdk/clients/blueprint-manifest.md +++ b/docs/sdk/clients/blueprint-manifest.md @@ -1,5 +1,6 @@ --- title: "Blueprint Manifest API" +description: "TypeScript SDK client for the epilot Blueprint Manifest API: usage with @epilot/sdk, all operations and schemas." --- # Blueprint Manifest API diff --git a/docs/sdk/clients/consent.md b/docs/sdk/clients/consent.md index 274650a4..3ccef7c8 100644 --- a/docs/sdk/clients/consent.md +++ b/docs/sdk/clients/consent.md @@ -1,5 +1,6 @@ --- title: "Consent API" +description: "TypeScript SDK client for the epilot Consent API: usage with @epilot/sdk, all operations and schemas." --- # Consent API diff --git a/docs/sdk/clients/customer-portal.md b/docs/sdk/clients/customer-portal.md index 7d625114..41304b09 100644 --- a/docs/sdk/clients/customer-portal.md +++ b/docs/sdk/clients/customer-portal.md @@ -1,5 +1,6 @@ --- title: "Portal API" +description: "TypeScript SDK client for the epilot Portal API: usage with @epilot/sdk, all operations and schemas." --- # Portal API diff --git a/docs/sdk/clients/dashboard.md b/docs/sdk/clients/dashboard.md index cdd0017b..eb024b09 100644 --- a/docs/sdk/clients/dashboard.md +++ b/docs/sdk/clients/dashboard.md @@ -1,5 +1,6 @@ --- title: "Dashboard API" +description: "TypeScript SDK client for the epilot Dashboard API: usage with @epilot/sdk, all operations and schemas." --- # Dashboard API diff --git a/docs/sdk/clients/data-governance.md b/docs/sdk/clients/data-governance.md index 29debd78..d41823bf 100644 --- a/docs/sdk/clients/data-governance.md +++ b/docs/sdk/clients/data-governance.md @@ -1,5 +1,6 @@ --- title: "Data Governance API" +description: "TypeScript SDK client for the epilot Data Governance API: usage with @epilot/sdk, all operations and schemas." --- # Data Governance API diff --git a/docs/sdk/clients/deduplication.md b/docs/sdk/clients/deduplication.md index 47a0045d..b22674dc 100644 --- a/docs/sdk/clients/deduplication.md +++ b/docs/sdk/clients/deduplication.md @@ -1,5 +1,6 @@ --- title: "Deduplication API" +description: "TypeScript SDK client for the epilot Deduplication API: usage with @epilot/sdk, all operations and schemas." --- # Deduplication API diff --git a/docs/sdk/clients/design.md b/docs/sdk/clients/design.md index d62fa33d..51d7f941 100644 --- a/docs/sdk/clients/design.md +++ b/docs/sdk/clients/design.md @@ -1,5 +1,6 @@ --- title: "Design Builder API v2" +description: "TypeScript SDK client for the epilot Design Builder API v2: usage with @epilot/sdk, all operations and schemas." --- # Design Builder API v2 diff --git a/docs/sdk/clients/document.md b/docs/sdk/clients/document.md index f612fb6f..f4b54099 100644 --- a/docs/sdk/clients/document.md +++ b/docs/sdk/clients/document.md @@ -1,5 +1,6 @@ --- title: "Document API" +description: "TypeScript SDK client for the epilot Document API: usage with @epilot/sdk, all operations and schemas." --- # Document API diff --git a/docs/sdk/clients/email-settings.md b/docs/sdk/clients/email-settings.md index 39672d42..ad20706b 100644 --- a/docs/sdk/clients/email-settings.md +++ b/docs/sdk/clients/email-settings.md @@ -1,5 +1,6 @@ --- title: "Messaging Settings API" +description: "TypeScript SDK client for the epilot Messaging Settings API: usage with @epilot/sdk, all operations and schemas." --- # Messaging Settings API diff --git a/docs/sdk/clients/email-template.md b/docs/sdk/clients/email-template.md index fb4d0083..2b84b1ba 100644 --- a/docs/sdk/clients/email-template.md +++ b/docs/sdk/clients/email-template.md @@ -1,5 +1,6 @@ --- title: "Email template API" +description: "TypeScript SDK client for the epilot Email template API: usage with @epilot/sdk, all operations and schemas." --- # Email template API diff --git a/docs/sdk/clients/entity-mapping.md b/docs/sdk/clients/entity-mapping.md index 2e373b56..5fd958cd 100644 --- a/docs/sdk/clients/entity-mapping.md +++ b/docs/sdk/clients/entity-mapping.md @@ -1,5 +1,6 @@ --- title: "Entity Mapping API" +description: "TypeScript SDK client for the epilot Entity Mapping API: usage with @epilot/sdk, all operations and schemas." --- # Entity Mapping API diff --git a/docs/sdk/clients/entity.md b/docs/sdk/clients/entity.md index 2474ec0e..031c7894 100644 --- a/docs/sdk/clients/entity.md +++ b/docs/sdk/clients/entity.md @@ -1,5 +1,6 @@ --- title: "Entity API" +description: "TypeScript SDK client for the epilot Entity API: usage with @epilot/sdk, all operations and schemas." --- # Entity API diff --git a/docs/sdk/clients/environments.md b/docs/sdk/clients/environments.md index 3ec47552..daebd8ee 100644 --- a/docs/sdk/clients/environments.md +++ b/docs/sdk/clients/environments.md @@ -1,5 +1,6 @@ --- title: "Environments API" +description: "TypeScript SDK client for the epilot Environments API: usage with @epilot/sdk, all operations and schemas." --- # Environments API diff --git a/docs/sdk/clients/erp-integration.md b/docs/sdk/clients/erp-integration.md index d8c5e9a6..000ef823 100644 --- a/docs/sdk/clients/erp-integration.md +++ b/docs/sdk/clients/erp-integration.md @@ -1,5 +1,6 @@ --- title: "ERP Integration API" +description: "TypeScript SDK client for the epilot ERP Integration API: usage with @epilot/sdk, all operations and schemas." --- # ERP Integration API diff --git a/docs/sdk/clients/event-catalog.md b/docs/sdk/clients/event-catalog.md index 8db8b838..db31de78 100644 --- a/docs/sdk/clients/event-catalog.md +++ b/docs/sdk/clients/event-catalog.md @@ -1,5 +1,6 @@ --- title: " Event Catalog API" +description: "TypeScript SDK client for the epilot Event Catalog API: usage with @epilot/sdk, all operations and schemas." --- # Event Catalog API diff --git a/docs/sdk/clients/file.md b/docs/sdk/clients/file.md index 5df31eb5..6f7463f0 100644 --- a/docs/sdk/clients/file.md +++ b/docs/sdk/clients/file.md @@ -1,5 +1,6 @@ --- title: "File API" +description: "TypeScript SDK client for the epilot File API: usage with @epilot/sdk, all operations and schemas." --- # File API diff --git a/docs/sdk/clients/iban.md b/docs/sdk/clients/iban.md index 70a8d4cc..68f7ac8f 100644 --- a/docs/sdk/clients/iban.md +++ b/docs/sdk/clients/iban.md @@ -1,5 +1,6 @@ --- title: "Iban API" +description: "TypeScript SDK client for the epilot Iban API: usage with @epilot/sdk, all operations and schemas." --- # Iban API diff --git a/docs/sdk/clients/journey.md b/docs/sdk/clients/journey.md index 717ae8d5..64023d85 100644 --- a/docs/sdk/clients/journey.md +++ b/docs/sdk/clients/journey.md @@ -1,5 +1,6 @@ --- title: "Journey API" +description: "TypeScript SDK client for the epilot Journey API: usage with @epilot/sdk, all operations and schemas." --- # Journey API diff --git a/docs/sdk/clients/kanban.md b/docs/sdk/clients/kanban.md index 7a02406f..76e82271 100644 --- a/docs/sdk/clients/kanban.md +++ b/docs/sdk/clients/kanban.md @@ -1,5 +1,6 @@ --- title: "Kanban API" +description: "TypeScript SDK client for the epilot Kanban API: usage with @epilot/sdk, all operations and schemas." --- # Kanban API diff --git a/docs/sdk/clients/message.md b/docs/sdk/clients/message.md index 6070c0ce..6bee3450 100644 --- a/docs/sdk/clients/message.md +++ b/docs/sdk/clients/message.md @@ -1,5 +1,6 @@ --- title: "Message API" +description: "TypeScript SDK client for the epilot Message API: usage with @epilot/sdk, all operations and schemas." --- # Message API diff --git a/docs/sdk/clients/metering.md b/docs/sdk/clients/metering.md index d073ec5e..a01d6bdb 100644 --- a/docs/sdk/clients/metering.md +++ b/docs/sdk/clients/metering.md @@ -1,5 +1,6 @@ --- title: "Metering API" +description: "TypeScript SDK client for the epilot Metering API: usage with @epilot/sdk, all operations and schemas." --- # Metering API diff --git a/docs/sdk/clients/notes.md b/docs/sdk/clients/notes.md index 0193a59e..340a6a4d 100644 --- a/docs/sdk/clients/notes.md +++ b/docs/sdk/clients/notes.md @@ -1,5 +1,6 @@ --- title: "Notes API" +description: "TypeScript SDK client for the epilot Notes API: usage with @epilot/sdk, all operations and schemas." --- # Notes API diff --git a/docs/sdk/clients/notification.md b/docs/sdk/clients/notification.md index a0ed0b1a..ac9e84d6 100644 --- a/docs/sdk/clients/notification.md +++ b/docs/sdk/clients/notification.md @@ -1,5 +1,6 @@ --- title: "Notification API" +description: "TypeScript SDK client for the epilot Notification API: usage with @epilot/sdk, all operations and schemas." --- # Notification API diff --git a/docs/sdk/clients/organization.md b/docs/sdk/clients/organization.md index 9c2ad79a..42109829 100644 --- a/docs/sdk/clients/organization.md +++ b/docs/sdk/clients/organization.md @@ -1,5 +1,6 @@ --- title: "Organization API" +description: "TypeScript SDK client for the epilot Organization API: usage with @epilot/sdk, all operations and schemas." --- # Organization API diff --git a/docs/sdk/clients/partner-directory.md b/docs/sdk/clients/partner-directory.md index f7930390..da94d86e 100644 --- a/docs/sdk/clients/partner-directory.md +++ b/docs/sdk/clients/partner-directory.md @@ -1,5 +1,6 @@ --- title: "Partner Directory API" +description: "TypeScript SDK client for the epilot Partner Directory API: usage with @epilot/sdk, all operations and schemas." --- # Partner Directory API diff --git a/docs/sdk/clients/permissions.md b/docs/sdk/clients/permissions.md index 6946d3df..a0f68348 100644 --- a/docs/sdk/clients/permissions.md +++ b/docs/sdk/clients/permissions.md @@ -1,5 +1,6 @@ --- title: "Permissions API" +description: "TypeScript SDK client for the epilot Permissions API: usage with @epilot/sdk, all operations and schemas." --- # Permissions API diff --git a/docs/sdk/clients/pricing-tier.md b/docs/sdk/clients/pricing-tier.md index 51733e4c..2cccffc1 100644 --- a/docs/sdk/clients/pricing-tier.md +++ b/docs/sdk/clients/pricing-tier.md @@ -1,5 +1,6 @@ --- title: "Pricing Tier API" +description: "TypeScript SDK client for the epilot Pricing Tier API: usage with @epilot/sdk, all operations and schemas." --- # Pricing Tier API diff --git a/docs/sdk/clients/pricing.md b/docs/sdk/clients/pricing.md index e5e6a289..70a267e3 100644 --- a/docs/sdk/clients/pricing.md +++ b/docs/sdk/clients/pricing.md @@ -1,5 +1,6 @@ --- title: "Pricing API" +description: "TypeScript SDK client for the epilot Pricing API: usage with @epilot/sdk, all operations and schemas." --- # Pricing API diff --git a/docs/sdk/clients/purpose.md b/docs/sdk/clients/purpose.md index e89aa4f1..0f0ee550 100644 --- a/docs/sdk/clients/purpose.md +++ b/docs/sdk/clients/purpose.md @@ -1,5 +1,6 @@ --- title: "Purpose API" +description: "TypeScript SDK client for the epilot Purpose API: usage with @epilot/sdk, all operations and schemas." --- # Purpose API diff --git a/docs/sdk/clients/sandbox.md b/docs/sdk/clients/sandbox.md index fe953806..9dcecff6 100644 --- a/docs/sdk/clients/sandbox.md +++ b/docs/sdk/clients/sandbox.md @@ -1,5 +1,6 @@ --- title: "Sandbox API" +description: "TypeScript SDK client for the epilot Sandbox API: usage with @epilot/sdk, all operations and schemas." --- # Sandbox API diff --git a/docs/sdk/clients/submission.md b/docs/sdk/clients/submission.md index 11f0a728..f0b7fb54 100644 --- a/docs/sdk/clients/submission.md +++ b/docs/sdk/clients/submission.md @@ -1,5 +1,6 @@ --- title: "Submission API" +description: "TypeScript SDK client for the epilot Submission API: usage with @epilot/sdk, all operations and schemas." --- # Submission API diff --git a/docs/sdk/clients/targeting.md b/docs/sdk/clients/targeting.md index 07c42390..9987fa29 100644 --- a/docs/sdk/clients/targeting.md +++ b/docs/sdk/clients/targeting.md @@ -1,5 +1,6 @@ --- title: "Targeting API" +description: "TypeScript SDK client for the epilot Targeting API: usage with @epilot/sdk, all operations and schemas." --- # Targeting API diff --git a/docs/sdk/clients/template-variables.md b/docs/sdk/clients/template-variables.md index b844b932..f39aebd1 100644 --- a/docs/sdk/clients/template-variables.md +++ b/docs/sdk/clients/template-variables.md @@ -1,5 +1,6 @@ --- title: "Template Variables API" +description: "TypeScript SDK client for the epilot Template Variables API: usage with @epilot/sdk, all operations and schemas." --- # Template Variables API diff --git a/docs/sdk/clients/user.md b/docs/sdk/clients/user.md index 6f86b7a7..0549fb8f 100644 --- a/docs/sdk/clients/user.md +++ b/docs/sdk/clients/user.md @@ -1,5 +1,6 @@ --- title: "User API" +description: "TypeScript SDK client for the epilot User API: usage with @epilot/sdk, all operations and schemas." --- # User API diff --git a/docs/sdk/clients/validation-rules.md b/docs/sdk/clients/validation-rules.md index 867b0549..df3b2900 100644 --- a/docs/sdk/clients/validation-rules.md +++ b/docs/sdk/clients/validation-rules.md @@ -1,5 +1,6 @@ --- title: "Validation Rules API" +description: "TypeScript SDK client for the epilot Validation Rules API: usage with @epilot/sdk, all operations and schemas." --- # Validation Rules API diff --git a/docs/sdk/clients/webhooks.md b/docs/sdk/clients/webhooks.md index b3c61f86..03ae1143 100644 --- a/docs/sdk/clients/webhooks.md +++ b/docs/sdk/clients/webhooks.md @@ -1,5 +1,6 @@ --- title: "Webhooks" +description: "TypeScript SDK client for the epilot Webhooks: usage with @epilot/sdk, all operations and schemas." --- # Webhooks diff --git a/docs/sdk/clients/workflow-definition.md b/docs/sdk/clients/workflow-definition.md index c45a5807..1d8e7fff 100644 --- a/docs/sdk/clients/workflow-definition.md +++ b/docs/sdk/clients/workflow-definition.md @@ -1,5 +1,6 @@ --- title: "Workflows Definitions" +description: "TypeScript SDK client for the epilot Workflows Definitions: usage with @epilot/sdk, all operations and schemas." --- # Workflows Definitions diff --git a/docs/sdk/clients/workflow.md b/docs/sdk/clients/workflow.md index 29440783..2cda8316 100644 --- a/docs/sdk/clients/workflow.md +++ b/docs/sdk/clients/workflow.md @@ -1,5 +1,6 @@ --- title: "Workflows Executions" +description: "TypeScript SDK client for the epilot Workflows Executions: usage with @epilot/sdk, all operations and schemas." --- # Workflows Executions diff --git a/docs/sdk/overview.md b/docs/sdk/overview.md index f71e2474..1a8f6767 100644 --- a/docs/sdk/overview.md +++ b/docs/sdk/overview.md @@ -1,6 +1,7 @@ --- sidebar_position: 1 title: Overview +description: "@epilot/sdk is the official TypeScript SDK for epilot: one package with 30+ fully typed API clients. Install it, get started and import only the clients you need." --- # epilot SDK @@ -87,7 +88,7 @@ authorize(entity, () => '') const { data } = await entity.getEntity({ slug: 'contact', id: '123' }) ``` -See [Client Usage](client-usage) for all import patterns. +See [Client Usage](client-usage.md) for all import patterns. ## Available APIs @@ -97,44 +98,44 @@ See [Client Usage](client-usage) for all import patterns. | API | Import | Reference | | --- | ------ | --------- | -| `epilot.accessToken` | `@epilot/sdk/access-token` | [SDK](clients/access-token) · [API](/api/access-token) | -| `epilot.addressSuggestions` | `@epilot/sdk/address-suggestions` | [SDK](clients/address-suggestions) · [API](/api/address-suggestions) | -| `epilot.app` | `@epilot/sdk/app` | [SDK](clients/app) · [API](/api/app) | -| `epilot.auditLogs` | `@epilot/sdk/audit-logs` | [SDK](clients/audit-logs) · [API](/api/audit-logs) | -| `epilot.automation` | `@epilot/sdk/automation` | [SDK](clients/automation) · [API](/api/automation) | -| `epilot.billing` | `@epilot/sdk/billing` | [SDK](clients/billing) · [API](/api/billing) | -| `epilot.blueprintManifest` | `@epilot/sdk/blueprint-manifest` | [SDK](clients/blueprint-manifest) · [API](/api/blueprints) | -| `epilot.consent` | `@epilot/sdk/consent` | [SDK](clients/consent) · [API](/api/consent) | -| `epilot.customerPortal` | `@epilot/sdk/customer-portal` | [SDK](clients/customer-portal) · [API](/api/customer-portal) | -| `epilot.dashboard` | `@epilot/sdk/dashboard` | [SDK](clients/dashboard) · [API](/api/dashboard) | -| `epilot.design` | `@epilot/sdk/design` | [SDK](clients/design) · [API](/api/design) | -| `epilot.document` | `@epilot/sdk/document` | [SDK](clients/document) · [API](/api/document) | -| `epilot.emailSettings` | `@epilot/sdk/email-settings` | [SDK](clients/email-settings) · [API](/api/email-settings) | -| `epilot.emailTemplate` | `@epilot/sdk/email-template` | [SDK](clients/email-template) · [API](/api/email-template) | -| `epilot.entity` | `@epilot/sdk/entity` | [SDK](clients/entity) · [API](/api/entity) | -| `epilot.entityMapping` | `@epilot/sdk/entity-mapping` | [SDK](clients/entity-mapping) · [API](/api/entity-mapping) | -| `epilot.environments` | `@epilot/sdk/environments` | [SDK](clients/environments) · [API](/api/environments) | -| `epilot.erpIntegration` | `@epilot/sdk/erp-integration` | [SDK](clients/erp-integration) · [API](/api/erp-integration) | -| `epilot.eventCatalog` | `@epilot/sdk/event-catalog` | [SDK](clients/event-catalog) · [API](/api/event-catalog) | -| `epilot.file` | `@epilot/sdk/file` | [SDK](clients/file) · [API](/api/file) | -| `epilot.journey` | `@epilot/sdk/journey` | [SDK](clients/journey) · [API](/api/journey) | -| `epilot.kanban` | `@epilot/sdk/kanban` | [SDK](clients/kanban) · [API](/api/kanban) | -| `epilot.message` | `@epilot/sdk/message` | [SDK](clients/message) · [API](/api/message) | -| `epilot.metering` | `@epilot/sdk/metering` | [SDK](clients/metering) · [API](/api/metering) | -| `epilot.notes` | `@epilot/sdk/notes` | [SDK](clients/notes) · [API](/api/notes) | -| `epilot.notification` | `@epilot/sdk/notification` | [SDK](clients/notification) · [API](/api/notification) | -| `epilot.organization` | `@epilot/sdk/organization` | [SDK](clients/organization) · [API](/api/organization) | -| `epilot.partnerDirectory` | `@epilot/sdk/partner-directory` | [SDK](clients/partner-directory) · [API](/api/partner) | -| `epilot.permissions` | `@epilot/sdk/permissions` | [SDK](clients/permissions) · [API](/api/permissions) | -| `epilot.pricing` | `@epilot/sdk/pricing` | [SDK](clients/pricing) · [API](/api/pricing) | -| `epilot.purpose` | `@epilot/sdk/purpose` | [SDK](clients/purpose) · [API](/api/purpose) | -| `epilot.submission` | `@epilot/sdk/submission` | [SDK](clients/submission) · [API](/api/submission) | -| `epilot.targeting` | `@epilot/sdk/targeting` | [SDK](clients/targeting) · [API](/api/targeting) | -| `epilot.templateVariables` | `@epilot/sdk/template-variables` | [SDK](clients/template-variables) · [API](/api/template-variables) | -| `epilot.user` | `@epilot/sdk/user` | [SDK](clients/user) · [API](/api/user) | -| `epilot.validationRules` | `@epilot/sdk/validation-rules` | [SDK](clients/validation-rules) · [API](/api/validation-rules) | -| `epilot.webhooks` | `@epilot/sdk/webhooks` | [SDK](clients/webhooks) · [API](/api/webhooks) | -| `epilot.workflow` | `@epilot/sdk/workflow` | [SDK](clients/workflow) · [API](/api/workflow-execution) | -| `epilot.workflowDefinition` | `@epilot/sdk/workflow-definition` | [SDK](clients/workflow-definition) · [API](/api/workflow-definition) | +| `epilot.accessToken` | `@epilot/sdk/access-token` | [SDK](clients/access-token.md) · [API](/api/access-token) | +| `epilot.addressSuggestions` | `@epilot/sdk/address-suggestions` | [SDK](clients/address-suggestions.md) · [API](/api/address-suggestions) | +| `epilot.app` | `@epilot/sdk/app` | [SDK](clients/app.md) · [API](/api/app) | +| `epilot.auditLogs` | `@epilot/sdk/audit-logs` | [SDK](clients/audit-logs.md) · [API](/api/audit-logs) | +| `epilot.automation` | `@epilot/sdk/automation` | [SDK](clients/automation.md) · [API](/api/automation) | +| `epilot.billing` | `@epilot/sdk/billing` | [SDK](clients/billing.md) · [API](/api/billing) | +| `epilot.blueprintManifest` | `@epilot/sdk/blueprint-manifest` | [SDK](clients/blueprint-manifest.md) · [API](/api/blueprints) | +| `epilot.consent` | `@epilot/sdk/consent` | [SDK](clients/consent.md) · [API](/api/consent) | +| `epilot.customerPortal` | `@epilot/sdk/customer-portal` | [SDK](clients/customer-portal.md) · [API](/api/customer-portal) | +| `epilot.dashboard` | `@epilot/sdk/dashboard` | [SDK](clients/dashboard.md) · [API](/api/dashboard) | +| `epilot.design` | `@epilot/sdk/design` | [SDK](clients/design.md) · [API](/api/design) | +| `epilot.document` | `@epilot/sdk/document` | [SDK](clients/document.md) · [API](/api/document) | +| `epilot.emailSettings` | `@epilot/sdk/email-settings` | [SDK](clients/email-settings.md) · [API](/api/email-settings) | +| `epilot.emailTemplate` | `@epilot/sdk/email-template` | [SDK](clients/email-template.md) · [API](/api/email-template) | +| `epilot.entity` | `@epilot/sdk/entity` | [SDK](clients/entity.md) · [API](/api/entity) | +| `epilot.entityMapping` | `@epilot/sdk/entity-mapping` | [SDK](clients/entity-mapping.md) · [API](/api/entity-mapping) | +| `epilot.environments` | `@epilot/sdk/environments` | [SDK](clients/environments.md) · [API](/api/environments) | +| `epilot.erpIntegration` | `@epilot/sdk/erp-integration` | [SDK](clients/erp-integration.md) · [API](/api/erp-integration) | +| `epilot.eventCatalog` | `@epilot/sdk/event-catalog` | [SDK](clients/event-catalog.md) · [API](/api/event-catalog) | +| `epilot.file` | `@epilot/sdk/file` | [SDK](clients/file.md) · [API](/api/file) | +| `epilot.journey` | `@epilot/sdk/journey` | [SDK](clients/journey.md) · [API](/api/journey) | +| `epilot.kanban` | `@epilot/sdk/kanban` | [SDK](clients/kanban.md) · [API](/api/kanban) | +| `epilot.message` | `@epilot/sdk/message` | [SDK](clients/message.md) · [API](/api/message) | +| `epilot.metering` | `@epilot/sdk/metering` | [SDK](clients/metering.md) · [API](/api/metering) | +| `epilot.notes` | `@epilot/sdk/notes` | [SDK](clients/notes.md) · [API](/api/notes) | +| `epilot.notification` | `@epilot/sdk/notification` | [SDK](clients/notification.md) · [API](/api/notification) | +| `epilot.organization` | `@epilot/sdk/organization` | [SDK](clients/organization.md) · [API](/api/organization) | +| `epilot.partnerDirectory` | `@epilot/sdk/partner-directory` | [SDK](clients/partner-directory.md) · [API](/api/partner) | +| `epilot.permissions` | `@epilot/sdk/permissions` | [SDK](clients/permissions.md) · [API](/api/permissions) | +| `epilot.pricing` | `@epilot/sdk/pricing` | [SDK](clients/pricing.md) · [API](/api/pricing) | +| `epilot.purpose` | `@epilot/sdk/purpose` | [SDK](clients/purpose.md) · [API](/api/purpose) | +| `epilot.submission` | `@epilot/sdk/submission` | [SDK](clients/submission.md) · [API](/api/submission) | +| `epilot.targeting` | `@epilot/sdk/targeting` | [SDK](clients/targeting.md) · [API](/api/targeting) | +| `epilot.templateVariables` | `@epilot/sdk/template-variables` | [SDK](clients/template-variables.md) · [API](/api/template-variables) | +| `epilot.user` | `@epilot/sdk/user` | [SDK](clients/user.md) · [API](/api/user) | +| `epilot.validationRules` | `@epilot/sdk/validation-rules` | [SDK](clients/validation-rules.md) · [API](/api/validation-rules) | +| `epilot.webhooks` | `@epilot/sdk/webhooks` | [SDK](clients/webhooks.md) · [API](/api/webhooks) | +| `epilot.workflow` | `@epilot/sdk/workflow` | [SDK](clients/workflow.md) · [API](/api/workflow-execution) | +| `epilot.workflowDefinition` | `@epilot/sdk/workflow-definition` | [SDK](clients/workflow-definition.md) · [API](/api/workflow-definition) | diff --git a/docs/templates/custom-variables.md b/docs/templates/custom-variables.md index 3e976ed7..9712c4cd 100644 --- a/docs/templates/custom-variables.md +++ b/docs/templates/custom-variables.md @@ -1,5 +1,6 @@ --- sidebar_position: 5 +description: "Custom Variables are reusable, organization-level template logic (Handlebars expressions, order tables, journey links and text snippets) for email and document templates." --- # Custom Variables diff --git a/docs/templates/document-templates.md b/docs/templates/document-templates.md index e4c4c652..c58a1b2c 100644 --- a/docs/templates/document-templates.md +++ b/docs/templates/document-templates.md @@ -1,5 +1,6 @@ --- sidebar_position: 3 +description: "Generate PDF, DOCX and XLSX documents from Word or Excel templates populated with Handlebars variables from epilot entities." --- # Document Templates diff --git a/docs/templates/email-templates.md b/docs/templates/email-templates.md index 0e6943a2..341ac3e0 100644 --- a/docs/templates/email-templates.md +++ b/docs/templates/email-templates.md @@ -1,5 +1,6 @@ --- sidebar_position: 2 +description: "The Email Template API manages reusable email templates in epilot with HTML content, variable substitution, branding and file attachments." --- # Email Templates diff --git a/docs/templates/template-variables.md b/docs/templates/template-variables.md index 359b30fc..dc09c31a 100644 --- a/docs/templates/template-variables.md +++ b/docs/templates/template-variables.md @@ -1,5 +1,6 @@ --- sidebar_position: 0 +description: "The Template Variables API discovers and substitutes Handlebars variables in epilot email and document templates." --- # Template Variables diff --git a/docs/ui-design/concorde-design-tokens.md b/docs/ui-design/concorde-design-tokens.md index c87a89cd..6c4c9c60 100644 --- a/docs/ui-design/concorde-design-tokens.md +++ b/docs/ui-design/concorde-design-tokens.md @@ -2,6 +2,7 @@ title: Concorde Design tokens hide_title: true sidebar_position: 3 +description: "Reference of Concorde design tokens: the CSS variables for colors, typography, shadows, layout and blocks that style epilot Journeys built with the open-source Concorde library." ---

Concorde Design tokens: CSS variables

diff --git a/docs/workflows/intro.md b/docs/workflows/intro.md index 333a56c9..bead9bb4 100644 --- a/docs/workflows/intro.md +++ b/docs/workflows/intro.md @@ -1,6 +1,7 @@ --- title: Overview sidebar_position: 1 +description: "Workflows are structured collections of tasks that track progress and execute operations across a business process in epilot." --- # Workflows diff --git a/docs/workflows/workflow-data-on-entities.md b/docs/workflows/workflow-data-on-entities.md index c187b9a1..ac05a45c 100644 --- a/docs/workflows/workflow-data-on-entities.md +++ b/docs/workflows/workflow-data-on-entities.md @@ -1,6 +1,7 @@ --- title: Workflow data on entities sidebar_position: 2 +description: "How epilot stores workflow execution data inside the entity payload, keyed by workflow definition ID, and how to migrate from the deprecated structure." --- # Workflow data on entities diff --git a/docs/workflows/workflow-in-progress.md b/docs/workflows/workflow-in-progress.md index 2fc624b8..543ffa1f 100644 --- a/docs/workflows/workflow-in-progress.md +++ b/docs/workflows/workflow-in-progress.md @@ -1,6 +1,7 @@ --- title: Workflow in progress sidebar_position: 4 +description: "How epilot workflows progress: tasks, phases, their statuses and how the current workflow position is tracked." --- # Workflow in progress diff --git a/docs/workflows/workflow-notes.md b/docs/workflows/workflow-notes.md index 8bcd2706..e1ba5511 100644 --- a/docs/workflows/workflow-notes.md +++ b/docs/workflows/workflow-notes.md @@ -1,6 +1,7 @@ --- title: Workflow Notes sidebar_position: 3 +description: "Workflow Notes are stored through the Comments API with a specific context ID format that links each note to its workflow." --- # Workflow Notes diff --git a/docusaurus.config.js b/docusaurus.config.js index d02b0bd7..0205563e 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -16,9 +16,13 @@ const DOCS_URL = process.env.DOCS_URL || 'https://docs.epilot.io' ;( module.exports = { title: 'epilot dev center', - tagline: 'The Energy XRM - for developers.', + tagline: 'The energy XRM - for developers.', url: DOCS_URL, baseUrl: '/', + // Amplify serves every page from /index.html and 301-redirects + // /route to /route/. Emit trailing-slash URLs everywhere (links, canonical, + // og:url, sitemap) so they point at the final URL instead of a redirect. + trailingSlash: true, onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.svg', @@ -131,7 +135,9 @@ const DOCS_URL = process.env.DOCS_URL || 'https://docs.epilot.io' [ require.resolve('./src/plugins/llms-txt/index.js'), { - siteDescription: `epilot is a cloud-native SaaS platform (Energy XRM) designed for energy suppliers and service providers in the German energy market. + siteSummary: + 'Developer documentation for epilot, the energy XRM: a cloud-native SaaS platform for energy suppliers, grid operators and service providers in the German energy market. Covers the REST APIs, TypeScript SDK, CLI, Apps and every platform capability.', + siteDescription: `epilot is a cloud-native SaaS platform (energy XRM) designed for energy suppliers and service providers in the German energy market. The platform provides: - **Entity Management**: Flexible data modeling with schemas for contacts, products, orders, opportunities, and custom entities @@ -181,6 +187,10 @@ This documentation covers all aspects of the epilot platform for developers, adm colorMode: { respectPrefersColorScheme: true, }, + // Default og:image / twitter:image for pages without their own image. + // The logo is square, so use the matching "summary" Twitter card. + image: 'img/logo.png', + metadata: [{ name: 'twitter:card', content: 'summary' }], navbar: { title: 'Dev Center', logo: { diff --git a/scripts/update-cli-docs.sh b/scripts/update-cli-docs.sh index a9ff3084..9161dbb5 100755 --- a/scripts/update-cli-docs.sh +++ b/scripts/update-cli-docs.sh @@ -38,6 +38,7 @@ for src_file in "$CLI_DOCS_SRC"/*.md; do { echo "---" echo "title: \"$title\"" + echo "description: \"epilot CLI commands for the $title: quick start, common flags and every operation, callable from the command line.\"" echo "---" echo "" cat "$src_file" @@ -85,7 +86,7 @@ for doc_file in "$CLI_DOCS_DEST"/*.md; do # Extract title from the first H1 line (skip frontmatter) title="$(grep -m1 '^# ' "$doc_file" | sed 's/^# //')" TABLE_LINES="$TABLE_LINES -| $title | \`epilot $slug\` | [reference](commands/$slug) |" +| $title | \`epilot $slug\` | [reference](commands/$slug.md) |" done # Replace the table between markers in overview.md diff --git a/scripts/update-sdk-docs.sh b/scripts/update-sdk-docs.sh index 4d126984..869e1133 100755 --- a/scripts/update-sdk-docs.sh +++ b/scripts/update-sdk-docs.sh @@ -36,6 +36,7 @@ for src_file in "$SDK_DOCS_SRC"/*.md; do { echo "---" echo "title: \"$title\"" + echo "description: \"TypeScript SDK client for the epilot $title: usage with @epilot/sdk, all operations and schemas.\"" echo "---" echo "" cat "$src_file" @@ -146,7 +147,7 @@ if [ -f "$SDK_README" ]; then continue fi TABLE_LINES="$TABLE_LINES -| $api_name | $import_path | [SDK](clients/$slug) · [API]($api_route) |" +| $api_name | $import_path | [SDK](clients/$slug.md) · [API]($api_route) |" fi done < "$SDK_README" else @@ -159,7 +160,7 @@ else continue fi TABLE_LINES="$TABLE_LINES -| \`@epilot/sdk/$slug\` | \`@epilot/sdk/$slug\` | [SDK](clients/$slug) · [API]($api_route) |" +| \`@epilot/sdk/$slug\` | \`@epilot/sdk/$slug\` | [SDK](clients/$slug.md) · [API]($api_route) |" done fi diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index f404c0d9..5b54056d 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -55,7 +55,7 @@ export default function HeroSection(): JSX.Element {

Build what energy businesses need next.

- Everything you need to extend the Energy XRM—from APIs and SDKs to Apps, integrations, and agent-powered + Everything you need to extend the energy XRM—from APIs and SDKs to Apps, integrations, and agent-powered development.

diff --git a/src/components/JsonLd.tsx b/src/components/JsonLd.tsx new file mode 100644 index 00000000..24d251e2 --- /dev/null +++ b/src/components/JsonLd.tsx @@ -0,0 +1,21 @@ +import Head from '@docusaurus/Head'; +import React from 'react'; + +type Props = { + data: Record | Array>; +}; + +/** + * Renders schema.org structured data as a JSON-LD script in the page head. + * Only describe what is visible on the page. + */ +export default function JsonLd({ data }: Props): JSX.Element { + // Escape "<" so a value can never close the script tag early. + const json = JSON.stringify(data).replace(/ + + + ); +} diff --git a/src/components/QuickStartCards.tsx b/src/components/QuickStartCards.tsx index 8ea8a186..b18a3013 100644 --- a/src/components/QuickStartCards.tsx +++ b/src/components/QuickStartCards.tsx @@ -115,7 +115,7 @@ const items = [ { title: 'Documentation', description: - 'Understand the Energy XRM: entities, journeys, workflows, automation, pricing, and everything else that runs an energy business.', + 'Understand the energy XRM: entities, journeys, workflows, automation, pricing, and everything else that runs an energy business.', href: '/docs/intro', cta: 'Read the docs', art: , diff --git a/src/components/RedocPage.module.css b/src/components/RedocPage.module.css index ed4654f7..a41874e2 100644 --- a/src/components/RedocPage.module.css +++ b/src/components/RedocPage.module.css @@ -15,3 +15,12 @@ max-width: calc(100vw - var(--doc-sidebar-width) - 15px); } } + +.loadingIntro { + padding: 2rem 2.5rem 0; + max-width: 60rem; +} + +.loadingIntro p { + overflow-wrap: anywhere; +} diff --git a/src/components/RedocPage.tsx b/src/components/RedocPage.tsx index 90863ceb..d502943d 100644 --- a/src/components/RedocPage.tsx +++ b/src/components/RedocPage.tsx @@ -1,3 +1,4 @@ +import Head from '@docusaurus/Head'; import DocPageStyles from '@docusaurus/theme-classic/lib-next/theme/DocPage/styles.module.css'; import ApiSidebar from '@site/src/components/ApiSidebar'; import { enrichSpecWithPermissions } from '@site/src/utils/openapi-permissions'; @@ -43,16 +44,35 @@ function useEnrichedSpec(specUrl: string): SpecState { } function RedocPage({ layoutProps, spec: propSpec }: Props): JSX.Element { - const { title = 'API Docs', description = 'Open API Reference Docs for the API' } = layoutProps || {}; - const specUrl: string = (propSpec.type === 'url' ? propSpec.content : undefined) || propSpec.specUrl; const specState = useEnrichedSpec(specUrl); + const { title = 'API Docs' } = layoutProps || {}; + const description = + layoutProps?.description || + `Reference for the epilot ${title}: endpoints, parameters, and request and response schemas, with the OpenAPI spec to download for SDK clients and AI agents.`; + return ( + + {/* The reference renders client-side; point crawlers and agents at the machine-readable contract. */} + +
- {specState.status === 'loading' && } + {specState.status === 'loading' && ( + <> + {/* Server-rendered while the spec loads; replaced by the full reference. */} +
+

{title}

+

{description}

+

+ OpenAPI spec: {specUrl} +

+
+ + + )} {specState.status === 'loaded' && } {/* Fall back to plain Redoc, which shows its own error when the spec cannot be loaded */} {specState.status === 'failed' && } diff --git a/src/pages/api.tsx b/src/pages/api.tsx index 3f81c66f..3ad22305 100644 --- a/src/pages/api.tsx +++ b/src/pages/api.tsx @@ -33,7 +33,10 @@ function ApiIntro(): JSX.Element { const specs: Spec[] = redocusaurusOpts?.[1]?.['specs'] ?? []; return ( - +
diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 2f5c5270..8b46471a 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,15 +1,32 @@ +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import { organization, website } from '@site/src/utils/structured-data'; import Layout from '@theme/Layout'; import React from 'react'; import CliSection from '../components/CliSection'; import ExplorePlatform from '../components/ExplorePlatform'; import HeroSection from '../components/HeroSection'; +import JsonLd from '../components/JsonLd'; import QuickStartCards from '../components/QuickStartCards'; import ResourcesFooter from '../components/ResourcesFooter'; +const DESCRIPTION = + 'Build on epilot, the energy XRM: developer documentation, REST API reference with OpenAPI specs, TypeScript SDK, CLI, Apps, integrations and agent tooling.'; + export default function Home(): JSX.Element { + const { siteConfig } = useDocusaurusContext(); + return ( - + + diff --git a/src/plugins/changelog/theme/ChangelogPage/index.tsx b/src/plugins/changelog/theme/ChangelogPage/index.tsx index ef05d7f4..f6c9c774 100644 --- a/src/plugins/changelog/theme/ChangelogPage/index.tsx +++ b/src/plugins/changelog/theme/ChangelogPage/index.tsx @@ -13,13 +13,17 @@ import styles from './styles.module.css'; function ChangelogPage(props: Props): JSX.Element { const { content: ChangelogContent } = props; const { metadata, toc } = ChangelogContent; - const { title, nextItem, prevItem } = metadata; + const { title, description, nextItem, prevItem } = metadata; const windowSize = useWindowSize(); const renderTocDesktop = toc && toc.length > 0 && (windowSize === 'desktop' || windowSize === 'ssr'); return ( - +
diff --git a/src/plugins/llms-txt/index.js b/src/plugins/llms-txt/index.js index f0035663..6781c2d4 100644 --- a/src/plugins/llms-txt/index.js +++ b/src/plugins/llms-txt/index.js @@ -7,30 +7,45 @@ const matter = require('gray-matter'); const PLUGIN_NAME = 'docusaurus-plugin-llms-txt'; /** - * Cleans markdown content for LLM consumption. - * Removes MDX-specific syntax, JSX components, and other non-standard markdown. + * Cleans the prose of an MDX document: removes imports/exports, JSX + * components and expressions, converts admonitions to blockquotes and simple + * HTML (spacer paragraphs, headings, paragraphs, images) to markdown. + * Inline code spans are left untouched. */ -function cleanMarkdownForLlm(content) { - let cleaned = content; +function cleanProse(prose) { + const codeSpans = []; + let cleaned = prose.replace(/`[^`\n]+`/g, (span) => { + codeSpans.push(span); - // Remove import statements - cleaned = cleaned.replace(/^import\s+.*?(?:from\s+)?['"].*?['"];?\s*$/gm, ''); + return `\u0000${codeSpans.length - 1}\u0000`; + }); - // Remove export statements + // Remove import and export statements + cleaned = cleaned.replace(/^import\s+.*?(?:from\s+)?['"].*?['"];?\s*$/gm, ''); cleaned = cleaned.replace(/^export\s+(?:default\s+)?.*?;?\s*$/gm, ''); - // Remove JSX self-closing components like + // Remove JSX components (self-closing, with content, and leftover tags) cleaned = cleaned.replace(/<[A-Z][a-zA-Z0-9]*\s*[^>]*\/>/g, ''); - - // Remove JSX opening and closing tags with content cleaned = cleaned.replace(/<[A-Z][a-zA-Z0-9]*[^>]*>[\s\S]*?<\/[A-Z][a-zA-Z0-9]*>/g, ''); - - // Remove remaining JSX tags cleaned = cleaned.replace(/<[A-Z][a-zA-Z0-9]*[^>]*>/g, ''); cleaned = cleaned.replace(/<\/[A-Z][a-zA-Z0-9]*>/g, ''); - // Remove MDX expressions {expression} - cleaned = cleaned.replace(/\{[^}]+\}/g, ''); + // Remove single-line MDX expressions {expression} + cleaned = cleaned.replace(/\{[^{}\n]+\}/g, ''); + + // Simple HTML to markdown + cleaned = cleaned.replace(/^[ \t]*

(?: |\s)*<\/p>[ \t]*$/gm, ''); + cleaned = cleaned.replace(/]*>/g, (tag) => { + const src = tag.match(/\ssrc="([^"]+)"/)?.[1]; + const alt = tag.match(/\salt="([^"]*)"/)?.[1] || ''; + + return src ? `![${alt}](${src})` : ''; + }); + cleaned = cleaned.replace( + /^[ \t]*]*>(.*?)<\/h\1>[ \t]*$/gm, + (_, level, text) => `${'#'.repeat(Number(level))} ${text.trim()}`, + ); + cleaned = cleaned.replace(/^[ \t]*]*>(.*?)<\/p>[ \t]*$/gm, '$1'); // Clean up Docusaurus admonitions - convert to blockquotes cleaned = cleaned.replace(/^:::\s*(note|tip|info|warning|danger|caution)(?:\s+(.+?))?$/gm, (_, type, title) => { @@ -43,14 +58,47 @@ function cleanMarkdownForLlm(content) { // Remove HTML comments cleaned = cleaned.replace(//g, ''); - // Remove multiple consecutive blank lines (keep max 2) - cleaned = cleaned.replace(/\n{3,}/g, '\n\n'); + // eslint-disable-next-line no-control-regex + return cleaned.replace(/\u0000(\d+)\u0000/g, (_, index) => codeSpans[Number(index)]); +} + +/** + * Cleans markdown content for LLM consumption. MDX-specific syntax is only + * removed from prose: fenced code blocks are kept verbatim, so code samples + * keep their imports, JSX and JSON objects. + */ +function cleanMarkdownForLlm(content) { + const output = []; + let prose = []; + let fence = null; + + for (const line of content.split('\n')) { + const marker = line.match(/^\s*(`{3,}|~{3,})/)?.[1]; + + if (fence) { + output.push(line); + if (marker && marker[0] === fence[0] && marker.length >= fence.length && line.trim() === marker) fence = null; + } else if (marker) { + output.push(cleanProse(prose.join('\n'))); + prose = []; + output.push(line); + fence = marker; + } else { + prose.push(line); + } + } + output.push(cleanProse(prose.join('\n'))); - return cleaned.trim(); + // Remove multiple consecutive blank lines (keep max 2) + return output + .join('\n') + .replace(/\n{3,}/g, '\n\n') + .trim(); } /** - * Generates plain text content from a markdown source file. + * Generates plain markdown content from a source file: the page's H1 (its own + * or the frontmatter title), then the frontmatter description, then the body. */ async function generatePageContent(filePath) { if (!(await fs.pathExists(filePath))) { @@ -59,23 +107,17 @@ async function generatePageContent(filePath) { const fileContent = await fs.readFile(filePath, 'utf-8'); const { data: frontMatter, content } = matter(fileContent); - const cleanedContent = cleanMarkdownForLlm(content); - - let result = ''; - - const title = frontMatter.title || frontMatter.sidebar_label; - // Skip the frontmatter title when the body already opens with its own H1. - if (title && !/^#\s/.test(cleanedContent)) { - result += `# ${title}\n\n`; - } - - if (frontMatter.description) { - result += `${frontMatter.description}\n\n`; + let body = cleanMarkdownForLlm(content); + + let heading = ''; + if (/^#\s/.test(body)) { + [heading] = body.split('\n', 1); + body = body.slice(heading.length).trim(); + } else if (frontMatter.title || frontMatter.sidebar_label) { + heading = `# ${frontMatter.title || frontMatter.sidebar_label}`; } - result += cleanedContent; - - return result; + return [heading, frontMatter.description, body].filter(Boolean).join('\n\n'); } // Docusaurus strips number prefixes like "1-entities" from path segments. @@ -147,7 +189,94 @@ async function collectDocs(siteDir) { return docs; } -const docTitle = (doc) => doc.frontMatter.title || doc.frontMatter.sidebar_label || doc.route.split('/').pop(); +/** Title as shown on the page: frontmatter title, else the page's own H1, else its URL segment. */ +const docTitle = (doc, content) => + doc.frontMatter.title || + doc.frontMatter.sidebar_label || + content.match(/^#\s+(.+)$/m)?.[1].trim() || + doc.route.split('/').pop(); + +const HTML_ENTITIES = { amp: '&', lt: '<', gt: '>', quot: '"', apos: "'", nbsp: ' ' }; + +function decodeHtmlEntities(text) { + return text.replace(/&(#x[0-9a-f]+|#\d+|[a-z]+);/gi, (match, entity) => { + if (entity[0] === '#') { + const code = entity[1].toLowerCase() === 'x' ? parseInt(entity.slice(2), 16) : parseInt(entity.slice(1), 10); + + return String.fromCodePoint(code); + } + + return HTML_ENTITIES[entity.toLowerCase()] ?? match; + }); +} + +/** + * Reads the meta description Docusaurus rendered for a page: the frontmatter + * `description`, or else its own excerpt of the first paragraph. Excerpts that + * are only a link row ("[API Docs] [SDK]"), a list item or whitespace are + * dropped rather than shown as a description. + */ +async function readBuiltDescription(htmlPath) { + const html = await fs.readFile(htmlPath, 'utf-8'); + const match = html.match(/]*name="description"[^>]*content="([^"]*)"/); + if (!match) return undefined; + + const description = decodeHtmlEntities(match[1]).replace(/\s+/g, ' ').trim(); + if (description.length < 30 || /^(\[|- |\* )/.test(description) || /^@[\w/.-]+$/.test(description)) return undefined; + + return description; +} + +/** + * Reads the label and position of a top-level docs section from its + * _category_.json / _category_.yml, as shown in the sidebar. + */ +async function readCategory(siteDir, section) { + const dir = path.join(siteDir, 'docs', section); + for (const name of ['_category_.json', '_category_.yml', '_category_.yaml']) { + const file = path.join(dir, name); + if (!(await fs.pathExists(file))) continue; + + const raw = await fs.readFile(file, 'utf-8'); + if (name.endsWith('.json')) { + const { label, position } = JSON.parse(raw); + + return { label, position }; + } + + const label = raw.match(/^label:\s*['"]?(.+?)['"]?\s*$/m)?.[1]; + const position = raw.match(/^position:\s*(\d+)/m)?.[1]; + + return { label, position: position === undefined ? undefined : Number(position) }; + } + + return {}; +} + +/** + * Groups doc items by their top-level docs section (/docs/

/...), + * ordered like the sidebar. Single top-level pages such as /docs/intro form + * their own section named after the page. + */ +async function groupBySection(siteDir, items) { + const sections = new Map(); + + for (const item of items) { + const key = item.path.split('/').filter(Boolean)[1] || ''; + if (!sections.has(key)) sections.set(key, { key, items: [] }); + sections.get(key).items.push(item); + } + + for (const section of sections.values()) { + const { label, position } = await readCategory(siteDir, section.key); + const isSinglePage = section.items.length === 1 && section.items[0].path === `/docs/${section.key}`; + section.label = label || (isSinglePage ? section.items[0].title : section.key); + // The docs landing page always comes first. + section.position = section.key === 'intro' ? -1 : position ?? Number.MAX_SAFE_INTEGER; + } + + return [...sections.values()].sort((a, b) => a.position - b.position || a.label.localeCompare(b.label)); +} /** * Loads the OpenAPI spec list from redoc.config.js for the llms.txt APIs section. @@ -169,34 +298,44 @@ function loadApiSpecs(siteDir) { } } +const formatSize = (bytes) => + bytes >= 1024 * 1024 ? `${(bytes / 1024 / 1024).toFixed(1)} MB` : `${Math.ceil(bytes / 1024)} KB`; + /** - * Generates the root llms.txt content with agent instructions and a page index. + * Generates the root llms.txt following https://llmstxt.org/: H1 title, + * blockquote summary, free-form details, then H2 sections of + * "- [Title](url): description" links, ending with an "Optional" section. */ -function generateRootLlmsTxt(siteConfig, items, siteDescription, apiSpecs) { +function generateRootLlmsTxt({ siteConfig, pageUrl, sections, siteSummary, siteDescription, apiSpecs, docSets }) { const siteUrl = siteConfig.url; const lines = []; lines.push(`# ${siteConfig.title}`); lines.push(''); + const summary = siteSummary || siteConfig.tagline; + if (summary) { + lines.push(`> ${summary}`); + lines.push(''); + } + if (siteDescription) { lines.push(siteDescription); lines.push(''); - } else if (siteConfig.tagline) { - lines.push(siteConfig.tagline); - lines.push(''); } lines.push('## Instructions for LLM agents'); lines.push(''); lines.push( - '- Every documentation page is available as raw markdown by appending `.md` to its URL (e.g. `' + + '- Every documentation page is available as raw markdown by appending `.md` to its URL without the trailing slash (e.g. `' + siteUrl + - '/docs/intro.md`). Prefer the markdown version over the HTML page.', + '/docs/intro.md`). The links below point at those markdown versions. Prefer them over the HTML pages.', + ); + lines.push( + `- The complete documentation in a single file: ${siteUrl}/llms-full.txt. Smaller per-section files are listed under "Documentation sets".`, ); - lines.push(`- The complete documentation in a single file: ${siteUrl}/llms-full.txt`); lines.push( - '- REST API contracts are published as raw OpenAPI 3.0 YAML specs (see the APIs section below). Use the spec, not the HTML API reference pages, which render client-side.', + '- REST API contracts are published as raw OpenAPI specs (see the APIs section below). Use the spec, not the HTML API reference pages, which render client-side.', ); lines.push( '- Official TypeScript SDK: `@epilot/sdk` on npm, plus per-API clients (e.g. `@epilot/entity-client`, `@epilot/pricing-client`). Check the npm registry for current versions instead of relying on memorized ones.', @@ -206,45 +345,66 @@ function generateRootLlmsTxt(siteConfig, items, siteDescription, apiSpecs) { if (apiSpecs.length > 0) { lines.push('## APIs'); lines.push(''); - lines.push('Raw OpenAPI 3.0 specifications for every epilot API:'); - lines.push(''); for (const spec of apiSpecs) { - lines.push(`- [${spec.title}](${spec.specUrl}): reference at ${siteUrl}${spec.routePath}`); + lines.push( + `- [${spec.title}](${spec.specUrl}): OpenAPI spec. Human-readable reference: ${pageUrl(spec.routePath)}`, + ); } lines.push(''); } - lines.push('## Documentation Pages'); - lines.push(''); - - // Group items by top-level path - const grouped = new Map(); - - for (const item of items) { - const pathParts = item.path.split('/').filter(Boolean); - const groupKey = pathParts.length > 1 ? `/${pathParts[0]}/${pathParts[1]}` : `/${pathParts[0] || ''}`; - - if (!grouped.has(groupKey)) { - grouped.set(groupKey, []); - } - grouped.get(groupKey).push(item); - } - - for (const [groupPath, groupItems] of grouped) { - lines.push(`### ${groupPath}`); + for (const section of sections) { + lines.push(`## ${section.label}`); lines.push(''); - - for (const item of groupItems) { - const fullUrl = `${siteUrl}${item.path}`; + for (const item of section.items) { const description = item.description ? `: ${item.description}` : ''; - lines.push(`- [${item.title}](${fullUrl}.md)${description}`); + lines.push(`- [${item.title}](${siteUrl}${item.path}.md)${description}`); } lines.push(''); } - lines.push('---'); + lines.push('## Documentation sets'); + lines.push(''); + for (const set of docSets) { + lines.push(`- [${set.title}](${set.url}): ${set.description} (${formatSize(set.bytes)})`); + } + lines.push(''); + + lines.push('## Optional'); + lines.push(''); + lines.push( + `- [API Changelog](${pageUrl( + '/api/changelog', + )}): Breaking changes, new features, and significant updates to epilot APIs, newest first. Also available as RSS at ${siteUrl}/api/changelog/rss.xml`, + ); + lines.push( + `- [API discovery document](${siteUrl}/openapi-specs/apis.json): Machine-readable list of every epilot API with its OpenAPI spec URL and base URL.`, + ); lines.push(''); - lines.push('> This file follows the llms.txt standard. See: https://llmstxt.org/'); + + return lines.join('\n'); +} + +/** + * Builds an llms-full style document: a header, then each page with its + * canonical Source URL, separated by horizontal rules. + */ +function generateFullText(heading, intro, pages) { + const lines = [`# ${heading}`, '']; + if (intro) lines.push(intro, ''); + lines.push('---', ''); + + for (const { url, content } of pages) { + // Put the Source line right below the page's H1 (generatePageContent + // always starts the page with one when the page has a title). + const [firstLine, ...rest] = content.split('\n'); + if (/^#\s/.test(firstLine)) { + lines.push(firstLine, '', `Source: ${url}`, ...rest); + } else { + lines.push(`Source: ${url}`, '', content); + } + lines.push('', '---', ''); + } return lines.join('\n'); } @@ -254,18 +414,20 @@ function generateRootLlmsTxt(siteConfig, items, siteDescription, apiSpecs) { * @param {object} options */ module.exports = function pluginLlmsTxt(_context, options = {}) { - const { siteDescription } = options; + const { siteSummary, siteDescription } = options; return { name: PLUGIN_NAME, async postBuild({ siteConfig, outDir, siteDir }) { const allDocs = await collectDocs(siteDir); + const siteUrl = siteConfig.url; + // Canonical page URL, matching the site's trailingSlash setting. + const pageUrl = (route) => `${siteUrl}${route}${siteConfig.trailingSlash && !route.endsWith('/') ? '/' : ''}`; console.log(`[${PLUGIN_NAME}] Found ${allDocs.length} doc files to process.`); - const items = []; - let successCount = 0; + const pages = []; let unresolvedCount = 0; // Generate per-page markdown (.md) and legacy llms.txt files @@ -278,7 +440,8 @@ module.exports = function pluginLlmsTxt(_context, options = {}) { // Only emit for routes that exist in the build output, so llms.txt // never links to pages that 404. const routeDir = path.join(outDir, doc.route); - if (!(await fs.pathExists(path.join(routeDir, 'index.html')))) { + const htmlPath = path.join(routeDir, 'index.html'); + if (!(await fs.pathExists(htmlPath))) { unresolvedCount++; console.warn(`[${PLUGIN_NAME}] No built page for ${doc.relativePath} at ${doc.route}, skipping.`); @@ -290,13 +453,13 @@ module.exports = function pluginLlmsTxt(_context, options = {}) { // Legacy per-page llms.txt location, kept for existing consumers await fs.writeFile(path.join(routeDir, 'llms.txt'), content, 'utf-8'); - successCount++; - // Collect metadata for root index - items.push({ + pages.push({ path: doc.route, - title: docTitle(doc), - description: doc.frontMatter.description, + url: pageUrl(doc.route), + title: docTitle(doc, content), + description: await readBuiltDescription(htmlPath), + content, }); } catch (err) { console.error(`[${PLUGIN_NAME}] Failed to process ${doc.relativePath}:`, err.message); @@ -305,57 +468,55 @@ module.exports = function pluginLlmsTxt(_context, options = {}) { ); console.log( - `[${PLUGIN_NAME}] Generated ${successCount} per-page .md/llms.txt files` + + `[${PLUGIN_NAME}] Generated ${pages.length} per-page .md/llms.txt files` + (unresolvedCount ? ` (${unresolvedCount} files had no matching route).` : '.'), ); - // Sort items by path - items.sort((a, b) => a.path.localeCompare(b.path)); - - const apiSpecs = loadApiSpecs(siteDir); - - // Generate root llms.txt - try { - const rootContent = generateRootLlmsTxt(siteConfig, items, siteDescription, apiSpecs); - const rootPath = path.join(outDir, 'llms.txt'); - await fs.writeFile(rootPath, rootContent, 'utf-8'); - console.log(`[${PLUGIN_NAME}] Generated root llms.txt with ${items.length} entries.`); - } catch (err) { - console.error(`[${PLUGIN_NAME}] Failed to generate root llms.txt:`, err.message); - throw err; - } - - // Generate llms-full.txt with all docs concatenated - try { - const fullLines = []; - fullLines.push(`# ${siteConfig.title} - Complete Documentation`); - fullLines.push(''); - - if (siteDescription) { - fullLines.push(siteDescription); - } else if (siteConfig.tagline) { - fullLines.push(siteConfig.tagline); - } - fullLines.push(''); - fullLines.push('---'); - fullLines.push(''); - - for (const { fullPath } of allDocs.sort((a, b) => a.relativePath.localeCompare(b.relativePath))) { - const content = await generatePageContent(fullPath); - if (content) { - fullLines.push(content); - fullLines.push(''); - fullLines.push('---'); - fullLines.push(''); - } - } - - const fullPath = path.join(outDir, 'llms-full.txt'); - await fs.writeFile(fullPath, fullLines.join('\n'), 'utf-8'); - console.log(`[${PLUGIN_NAME}] Generated llms-full.txt.`); - } catch (err) { - console.error(`[${PLUGIN_NAME}] Failed to generate llms-full.txt:`, err.message); + pages.sort((a, b) => a.path.localeCompare(b.path)); + const sections = await groupBySection(siteDir, pages); + + // llms-full.txt with every page, plus one file per multi-page section + const docSets = []; + const writeFullText = async (relativePath, title, description, heading, intro, sectionPages) => { + const text = generateFullText(heading, intro, sectionPages); + await fs.outputFile(path.join(outDir, relativePath), text, 'utf-8'); + docSets.push({ title, description, url: `${siteUrl}/${relativePath}`, bytes: Buffer.byteLength(text) }); + }; + + await writeFullText( + 'llms-full.txt', + 'Complete documentation', + 'Every documentation page in one markdown file.', + `${siteConfig.title} - Complete Documentation`, + siteSummary || siteConfig.tagline, + pages, + ); + for (const section of sections) { + if (section.items.length < 2) continue; + await writeFullText( + `docs/${section.key}/llms-full.txt`, + section.label, + `All ${section.items.length} pages of the ${section.label} section in one markdown file.`, + `${siteConfig.title} - ${section.label}`, + undefined, + section.items, + ); } + console.log(`[${PLUGIN_NAME}] Generated llms-full.txt and ${docSets.length - 1} per-section files.`); + + const rootContent = generateRootLlmsTxt({ + siteConfig, + pageUrl, + sections, + siteSummary, + siteDescription, + apiSpecs: loadApiSpecs(siteDir), + docSets, + }); + await fs.writeFile(path.join(outDir, 'llms.txt'), rootContent, 'utf-8'); + console.log( + `[${PLUGIN_NAME}] Generated root llms.txt with ${pages.length} entries in ${sections.length} sections.`, + ); }, }; }; diff --git a/src/theme/DocItem/index.tsx b/src/theme/DocItem/index.tsx new file mode 100644 index 00000000..6533a78c --- /dev/null +++ b/src/theme/DocItem/index.tsx @@ -0,0 +1,46 @@ +/** + * Wraps the default DocItem to add per-page machine-readable metadata: + * - a pointing at the raw markdown + * version of the page, which the llms-txt plugin writes next to every doc + * (/docs/foo/ -> /docs/foo.md) + * - TechArticle JSON-LD built from the page's own title and description + */ +import Head from '@docusaurus/Head'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import { organization, website } from '@site/src/utils/structured-data'; +import OriginalDocItem from '@theme-original/DocItem'; +import type { Props } from '@theme/DocItem'; +import React from 'react'; + +import JsonLd from '../../components/JsonLd'; + +export default function DocItem(props: Props): JSX.Element { + const { siteConfig } = useDocusaurusContext(); + const { metadata } = props.content; + const siteUrl = siteConfig.url; + const pageUrl = `${siteUrl}${metadata.permalink}`; + const markdownUrl = `${siteUrl}${metadata.permalink.replace(/\/$/, '')}.md`; + + const article: Record = { + '@context': 'https://schema.org', + '@type': 'TechArticle', + headline: metadata.title, + url: pageUrl, + inLanguage: 'en', + isPartOf: website(siteUrl, siteConfig.title), + publisher: organization(siteUrl), + }; + + if (metadata.description) article.description = metadata.description; + if (metadata.lastUpdatedAt) article.dateModified = new Date(metadata.lastUpdatedAt * 1000).toISOString(); + + return ( + <> + + + + + + + ); +} diff --git a/src/utils/structured-data.ts b/src/utils/structured-data.ts new file mode 100644 index 00000000..5dce4ddc --- /dev/null +++ b/src/utils/structured-data.ts @@ -0,0 +1,19 @@ +/** Shared schema.org nodes for JSON-LD on docs.epilot.io. */ + +export const organization = (siteUrl: string) => ({ + '@type': 'Organization', + '@id': 'https://www.epilot.cloud/#organization', + name: 'epilot', + url: 'https://www.epilot.cloud', + logo: `${siteUrl}/img/logo.png`, + sameAs: ['https://github.com/epilot-dev', 'https://dev.to/epilot'], +}); + +export const website = (siteUrl: string, name: string) => ({ + '@type': 'WebSite', + '@id': `${siteUrl}/#website`, + name, + url: `${siteUrl}/`, + inLanguage: 'en', + publisher: { '@id': 'https://www.epilot.cloud/#organization' }, +}); diff --git a/static/robots.txt b/static/robots.txt index 40310a19..4124f8f7 100644 --- a/static/robots.txt +++ b/static/robots.txt @@ -3,7 +3,8 @@ # and AI agents. LLM-friendly resources: # - /llms.txt (index for LLM agents, https://llmstxt.org/) # - /llms-full.txt (complete documentation in one file) -# - append .md to any docs URL for the raw markdown version +# - append .md to any docs URL (without the trailing slash) for the raw +# markdown version, e.g. /docs/intro.md User-agent: * Allow: /