Files
wiki/public/openapi.yaml
Wayne Sutton 997b9cad21 docs: update blog post and TASK.md with v1.9.0 scroll-to-top and v1.10.0 fork configuration
Updated:
- content/blog/raw-markdown-and-copy-improvements.md
  - Changed title from 'v1.7 and v1.8' to 'v1.7 to v1.10'
  - Added Fork configuration section (v1.10.0) with 9-file table
  - Added Scroll-to-top section (v1.9.0) with configuration options
  - Updated summary to include all features from v1.7 to v1.10
  - Fixed image path to /images/v17.png
  - Updated sync command guidance for dev vs prod
- TASK.md
  - Added new To Do items for future features
  - Removed duplicate Future Enhancements section
- content/pages/docs.md
  - Added Mobile menu section
  - Added Copy Page dropdown table with all options
  - Added Markdown tables section
- content/pages/about.md
  - Updated Features list with new v1.8.0 features
- content/blog/setup-guide.md
  - Added image field to pages schema
  - Updated Project structure with new directories
  - Added /raw/{slug}.md to API endpoints
  - Added Mobile Navigation and Copy Page Dropdown sections
  - Added featured image documentation with ordering details

Documentation now covers all features from v1.7.0 through v1.10.0.
2025-12-20 11:05:38 -08:00

196 lines
5.0 KiB
YAML

openapi: 3.0.3
info:
title: markdown sync site API
description: |
API for accessing blog posts and pages as markdown content.
All endpoints return JSON by default. Use format=md for raw markdown.
version: 1.6.0
contact:
url: https://github.com/waynesutton/markdown-site
servers:
- url: https://markdowncms.netlify.app
description: Production server
paths:
/api/posts:
get:
summary: List all posts
description: Returns a list of all published blog posts with metadata
operationId: listPosts
responses:
'200':
description: List of posts
content:
application/json:
schema:
type: object
properties:
site:
type: string
example: markdown sync site
url:
type: string
example: https://markdowncms.netlify.app
posts:
type: array
items:
$ref: '#/components/schemas/PostSummary'
/api/post:
get:
summary: Get a single post
description: Returns a single post by slug. Use format=md for raw markdown.
operationId: getPost
parameters:
- name: slug
in: query
required: true
description: The post slug (URL path)
schema:
type: string
- name: format
in: query
required: false
description: Response format (json or md)
schema:
type: string
enum: [json, md, markdown]
default: json
responses:
'200':
description: Post content
content:
application/json:
schema:
$ref: '#/components/schemas/Post'
text/markdown:
schema:
type: string
'400':
description: Missing slug parameter
'404':
description: Post not found
/api/export:
get:
summary: Export all posts with content
description: Returns all posts with full markdown content for batch processing
operationId: exportPosts
responses:
'200':
description: All posts with full content
content:
application/json:
schema:
type: object
properties:
site:
type: string
url:
type: string
exportedAt:
type: string
format: date-time
posts:
type: array
items:
$ref: '#/components/schemas/Post'
/rss.xml:
get:
summary: RSS feed
description: Standard RSS 2.0 feed with post descriptions
operationId: rssFeed
responses:
'200':
description: RSS XML feed
content:
application/rss+xml:
schema:
type: string
/rss-full.xml:
get:
summary: Full content RSS feed
description: RSS feed with complete post content (for LLMs)
operationId: rssFullFeed
responses:
'200':
description: RSS XML feed with full content
content:
application/rss+xml:
schema:
type: string
/sitemap.xml:
get:
summary: XML Sitemap
description: Dynamic sitemap for search engines
operationId: sitemap
responses:
'200':
description: XML Sitemap
content:
application/xml:
schema:
type: string
components:
schemas:
PostSummary:
type: object
properties:
title:
type: string
example: How to Build a Blog
slug:
type: string
example: how-to-build-blog
description:
type: string
example: A guide to building a markdown blog
date:
type: string
format: date
example: '2025-01-15'
readTime:
type: string
example: 5 min read
tags:
type: array
items:
type: string
example: [tutorial, markdown]
url:
type: string
example: https://markdowncms.netlify.app/how-to-build-blog
markdownUrl:
type: string
example: https://markdowncms.netlify.app/api/post?slug=how-to-build-blog
Post:
type: object
properties:
title:
type: string
slug:
type: string
description:
type: string
date:
type: string
format: date
readTime:
type: string
tags:
type: array
items:
type: string
url:
type: string
content:
type: string
description: Full markdown content