Session 45: support email, audit fixes (template validation, content-type, admin auth, waitUntil)
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 2m20s

- Added support@docfast.dev to footer, impressum, terms, landing page, openapi.json
- Fixed audit #6: Template render validates required fields (400 on missing)
- Fixed audit #7: Content-Type check on markdown/URL routes (415)
- Fixed audit #11: /v1/usage and /v1/concurrency now require ADMIN_API_KEY
- Fixed audit Critical #3: URL convert uses domcontentloaded instead of networkidle0
This commit is contained in:
OpenClaw 2026-02-16 19:30:21 +00:00
parent 8a86e34f91
commit 59cc8f3d0e
22 changed files with 166 additions and 61 deletions

View file

@ -77,7 +77,8 @@ footer .container { display: flex; justify-content: space-between; align-items:
<h2>Responsible for Content</h2>
<p>Cloonar Technologies GmbH<br>
Legal contact: <a href="mailto:legal@docfast.dev">legal@docfast.dev</a></p>
Legal contact: <a href="mailto:legal@docfast.dev">legal@docfast.dev</a><br>
Support: <a href="mailto:support@docfast.dev">support@docfast.dev</a></p>
<h2>Disclaimer</h2>
<p>Despite careful content control, we assume no liability for the content of external links. The operators of the linked pages are solely responsible for their content.</p>
@ -97,6 +98,7 @@ footer .container { display: flex; justify-content: space-between; align-items:
<a href="/docs">Docs</a>
<a href="/health">API Status</a>
<a href="/#change-email" class="open-email-change">Change Email</a>
<a href="mailto:support@docfast.dev">Support</a>
<a href="/impressum">Impressum</a>
<a href="/privacy">Privacy Policy</a>
<a href="/terms">Terms of Service</a>

View file

@ -407,7 +407,7 @@ html, body {
<li>5,000 PDFs per month</li>
<li>All conversion endpoints</li>
<li>All templates included</li>
<li>Priority support</li>
<li>Priority support (<a href="mailto:support@docfast.dev">support@docfast.dev</a>)</li>
</ul>
<button class="btn btn-primary" style="width:100%" id="btn-checkout">Get Started →</button>
</div>
@ -423,6 +423,7 @@ html, body {
<a href="/docs">Docs</a>
<a href="/health">API Status</a>
<a href="/#change-email" class="open-email-change">Change Email</a>
<a href="mailto:support@docfast.dev">Support</a>
<a href="/impressum">Impressum</a>
<a href="/privacy">Privacy Policy</a>
<a href="/terms">Terms of Service</a>

View file

@ -4,7 +4,7 @@
"title": "DocFast API",
"version": "1.0.0",
"description": "Convert HTML, Markdown, and URLs to pixel-perfect PDFs. Built-in invoice & receipt templates.\n\n## Authentication\nAll conversion and template endpoints require an API key via `Authorization: Bearer <key>` or `X-API-Key: <key>` header.\n\n## Rate Limits\n- Free tier: 100 PDFs/month, 10 req/min\n- Pro tier: 10,000 PDFs/month, 30 req/min\n\n## Getting Started\n1. Sign up at [docfast.dev](https://docfast.dev) or via `POST /v1/signup/free`\n2. Verify your email with the 6-digit code\n3. Use your API key to convert documents",
"contact": { "name": "DocFast", "url": "https://docfast.dev" }
"contact": { "name": "DocFast", "url": "https://docfast.dev", "email": "support@docfast.dev" }
},
"servers": [{ "url": "https://docfast.dev", "description": "Production" }],
"tags": [

View file

@ -180,6 +180,7 @@ footer .container { display: flex; justify-content: space-between; align-items:
<a href="/docs">Docs</a>
<a href="/health">API Status</a>
<a href="/#change-email" class="open-email-change">Change Email</a>
<a href="mailto:support@docfast.dev">Support</a>
<a href="/impressum">Impressum</a>
<a href="/privacy">Privacy Policy</a>
<a href="/terms">Terms of Service</a>

View file

@ -32,7 +32,8 @@
<h2>Responsible for Content</h2>
<p>Cloonar Technologies GmbH<br>
Legal contact: <a href="mailto:legal@docfast.dev">legal@docfast.dev</a></p>
Legal contact: <a href="mailto:legal@docfast.dev">legal@docfast.dev</a><br>
Support: <a href="mailto:support@docfast.dev">support@docfast.dev</a></p>
<h2>Disclaimer</h2>
<p>Despite careful content control, we assume no liability for the content of external links. The operators of the linked pages are solely responsible for their content.</p>

View file

@ -156,7 +156,7 @@
<li>5,000 PDFs per month</li>
<li>All conversion endpoints</li>
<li>All templates included</li>
<li>Priority support</li>
<li>Priority support (<a href="mailto:support@docfast.dev">support@docfast.dev</a>)</li>
</ul>
<button class="btn btn-primary" style="width:100%" id="btn-checkout">Get Started →</button>
</div>

View file

@ -48,7 +48,7 @@
<li><strong>Price:</strong> €9 per month</li>
<li><strong>Monthly limit:</strong> 10,000 PDF conversions</li>
<li><strong>Rate limit:</strong> Higher limits based on fair use</li>
<li><strong>Support:</strong> Priority email support</li>
<li><strong>Support:</strong> Priority email support (<a href="mailto:support@docfast.dev">support@docfast.dev</a>)</li>
<li><strong>Billing:</strong> Monthly subscription via Stripe</li>
</ul>

View file

@ -93,7 +93,7 @@ footer .container { display: flex; justify-content: space-between; align-items:
<li><strong>Price:</strong> €9 per month</li>
<li><strong>Monthly limit:</strong> 10,000 PDF conversions</li>
<li><strong>Rate limit:</strong> Higher limits based on fair use</li>
<li><strong>Support:</strong> Priority email support</li>
<li><strong>Support:</strong> Priority email support (<a href="mailto:support@docfast.dev">support@docfast.dev</a>)</li>
<li><strong>Billing:</strong> Monthly subscription via Stripe</li>
</ul>
@ -252,6 +252,7 @@ footer .container { display: flex; justify-content: space-between; align-items:
<a href="/docs">Docs</a>
<a href="/health">API Status</a>
<a href="/#change-email" class="open-email-change">Change Email</a>
<a href="mailto:support@docfast.dev">Support</a>
<a href="/impressum">Impressum</a>
<a href="/privacy">Privacy Policy</a>
<a href="/terms">Terms of Service</a>