Authors

Authors are publication-scoped public byline profiles. They are assigned to posts through /post/save; they are not user accounts or token principals.

Authentication

All routes require a bearer token and the named publication capability. For a new author or a list, send a publication selector. An existing author_id already identifies its publication; a supplied selector must match.

Routes

Route Methods Capability Required input Optional input and behavior Success result
/author/list GET, POST author.list Publication selector Pagination Paginated authors.
/author/get POST author.list author_id, or publication selector plus slug author.
/author/save POST author.save Create: publication selector and name; update: author_id name, slug, bio, avatar_media_id, external_url, socials, metadata Saved author.
/author/delete POST author.delete author_id Matching publication selector Deleted author.

Author object

{
  "author_id": "AUTHOR_UUID",
  "publication_id": "PUBLICATION_UUID",
  "slug": "ada-lovelace",
  "name": "Ada Lovelace",
  "bio": "Writer and mathematician.",
  "avatar_media_id": "MEDIA_UUID",
  "external_url": "https://example.com/ada",
  "socials": { "website": "https://example.com/ada" },
  "metadata": null,
  "created_at": "2026-08-19 00:00:00.000000",
  "updated_at": "2026-08-19 00:00:00.000000"
}

Save an author

Field Required Type Description
author_id No UUID Updates this author. Omit to create.
publication_id / publication_slug Required on create UUID / String Selects the publication.
name Required on create String Display name. Omit it on update to retain the stored value.
slug No String Unique in the publication. Omit or send an empty value to derive it from name.
bio No String or null Biography; an empty value clears it.
avatar_media_id No UUID or null Media identifier; an empty value clears it.
external_url No URL or null Public profile URL; an empty value clears it.
socials No Object or Array or null Public social data.
metadata No Object or Array or null Integration-defined metadata.
curl -sS https://api.blog.service.m7.org/v1/author/save \
  -H 'Authorization: Bearer ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"publication_slug":"engineering-notes","name":"Ada Lovelace"}'

/author/list accepts the standard pagination fields. /author/delete is permanent and returns 409 while the author is assigned to a post; first replace that post's author_ids through /post/save.