Skip to main content
PATCH
Error

Authorizations

Authorization
string
header
required

A staff session token, uk_st_…. Minted by sign-up, sign-in or the two-factor exchange. Only a 401 means it is spent; not_a_member (403) is about the organization named in X-Organization-Id and leaves the token good for the others.

Headers

X-Organization-Id
string

The organization the caller is acting on — the org_… code that appears in the panel URL. It identifies; the membership JOIN is what authorizes, so a forged code reads nothing: the answer is not_a_member (403), which does not mean the session is over. Absent, the session's default organization answers, or — if that membership was revoked while the session was open — any other one the caller still holds.

Path Parameters

id
string<uuid>
required

Body

application/json
title
string
Maximum string length: 200
body_markdown
string
Maximum string length: 100000
slug
string

Optional, and it MOVES the page: every link already sent to the old address stops working. Changing title deliberately does not come here — a typo fix in a headline is not a reason to break a permalink. 409 if another post in the environment holds it.

Maximum string length: 200
segment_id
string<uuid> | null

null clears the audience — everybody, and on a published post that means the public document.

feedback_post_id
string<uuid> | null

The other audience: the people who voted for that feedback post. Setting it CLEARS segment_id in the same statement — a post has at most one audience, and two calls would leave a window with none, which on this table means everybody. null clears it.

Response

The post.

post
object

One release note. Written as a draft, aimed at a segment or at everybody, and published by an act of its own — published_at is a moment rather than a flag, because the list is ordered by it and the unread badge compares a contact's arrival against it.