# AlphaColin public content API

This read-only API exposes the published writing and public site metadata from
alphacolin.com. It does not expose drafts, members, email addresses, analytics,
or administrative actions. No authentication is required or accepted.

## Access and permissions

The OpenAPI document declares `security: []`, meaning every documented
operation is anonymous. It also publishes descriptive, machine-readable
permissions so an agent can understand the least-privilege boundary:

- `public:health:read` — read service health only.
- `public:site:read` — read public site metadata.
- `public:posts:read` — list and read published posts only.

These names describe the API's fixed public capabilities; they are not token
scopes and cannot be exchanged for broader access. There are no write,
administrative, draft, member, or analytics permissions.

## Endpoints

- `GET /api` — API identity, access boundary, documentation, and endpoint index.
- `GET /api/health` — service health.
- `GET /api/site` — an explicit allowlist of public site identity fields:
  title, description, canonical URL, language, and primary/secondary navigation.
  Raw Ghost settings, membership configuration, injected scripts, email
  addresses, internal identifiers, and administrative configuration are never
  returned.
- `GET /api/posts` — published posts. Ghost Content API query parameters such
  as `limit`, `page`, `fields`, `formats`, `filter`, and `order` are accepted.
- `GET /api/posts/{slug}` — a single published post by slug.

All other methods and API paths return an appropriate `4xx` status with an
`application/json` error envelope containing `code`, `message`, `resolution`,
`request_id`, and `documentation` fields. Invalid query parameters are
reported as `400` instead of being silently accepted.

Example:

```json
{
  "error": {
    "code": "invalid_query_parameter",
    "message": "Query parameter \"limit\" must be one positive integer.",
    "resolution": "Use an integer from 1 through 100.",
    "request_id": "request identifier",
    "documentation": "https://alphacolin.com/docs/api"
  }
}
```

The machine-readable API description is at
[`/openapi.json`](https://alphacolin.com/openapi.json).
