OI
owner-website

API Reference

All 30 Cloudflare Pages Function endpoints for the Owner Website.

Public Endpoints

POST
/api/contact

Contact form submission — sends email via Resend to CONTACT_EMAIL

GET
/api/reviews

Fetch Google Places reviews from 3 locations (NSW, VIC, QLD). Cached 24 hours.

GET
/api/geolocation

GeoIP location detection from Cloudflare headers

Admin - Articles (Cloudflare Access Protected)

GET
/api/admin/articles

List all published MDX articles from GitHub via GraphQL

POST
/api/admin/articles/[slug]/edit

Edit article content

POST
/api/admin/articles/[slug]/delete

Delete article

Admin - AI Content Generation

POST
/api/admin/ai/generate-content

Generate full article with Claude AI (streamed via SSE). Auto-commits to Git.

POST
/api/admin/ai/generate-image

Generate image with Gemini 2.5 Flash. Sanitises prompts. 3 retry attempts.

POST
/api/admin/ai/test-image

Test image generation

POST
/api/admin/generate-excerpt

Generate article excerpt with Claude

Admin - File Management

GET
/api/admin/file

List content files

POST
/api/admin/file/create

Create new file

POST
/api/admin/file/save

Save file content

POST
/api/admin/file/delete

Delete file

POST
/api/admin/file/rename

Rename file

GET
/api/admin/file/raw

Get raw file content

GET
/api/admin/file/history

File revision history

POST
/api/admin/file/restore

Restore previous version

Admin - Draft Workflow

GET
/api/admin/draft/status

Check draft status (changed files)

POST
/api/admin/draft/save

Save article to cms/draft branch

POST
/api/admin/draft/publish

Publish all drafts to main

POST
/api/admin/draft/publish-selected

Publish selected files only

POST
/api/admin/draft/discard

Discard draft changes

Admin - Utilities

GET
/api/admin/auth/me

Get current authenticated admin user

GET
/api/admin/search

Search content files

GET
/api/admin/tree

Get file tree structure

GET
/api/admin/images

List uploaded images

POST
/api/admin/settings/system-prompt

Update AI system prompt

GET
/api/admin/unsplash/search

Search Unsplash images

POST
/api/admin/unsplash/download

Download Unsplash image