Authors
Public read-only author profiles backed by accounts.User, scoped to users with at least one published post.
Service: blog.authors
Public read-only — only find is exposed. Backed by accounts.User via a strict allowlist of public-safe profile fields. get_queryset scopes results to users who authored at least one public post, so unpublished drafts never reveal their authors.
Fields
| Field | Type | Description |
|---|---|---|
id |
string |
User id |
username |
string |
Username |
first_name |
string |
First name |
last_name |
string |
Last name |
headline |
string? |
Public headline. null if unset |
bio |
string? |
Public bio. null if unset |
Warning: Auth/crypto material (
password,permissions, key blobs) is outside the allowlist and can never be requested — even via?fields=...(rejected withFieldValidationError).
find
List post authors with their public profile. Only find is exposed; the inherited create / update / delete / detail routes are intentionally dropped.
HTTP
Request
GET /v1/blog/authors?fields=id,username,first_name,last_name,headline,bio&limit=100
Authorization: Bearer <token>
Response
{
"items": [
{
"id": "42",
"username": "jdoe",
"first_name": "John",
"last_name": "Doe",
"headline": "Staff writer",
"bio": "Covers security and privacy."
}
],
"total": 1
}
WebSocket
Request
{
"jsonrpc": "2.0",
"method": "blog.authors.find",
"params": {
"fields": ["id", "username", "first_name", "last_name", "headline", "bio"],
"limit": 100
},
"id": 40
}
Response
{
"jsonrpc": "2.0",
"result": {
"items": [
{
"id": "42",
"username": "jdoe",
"first_name": "John",
"last_name": "Doe",
"headline": "Staff writer",
"bio": "Covers security and privacy."
}
],
"total": 1
},
"id": 40
}