Skip to main content
Theses are moderated by the community and by CabalSpy moderators. Reports hide a post quickly, the author is told why and can appeal, and people who report in bad faith lose their influence. This page explains the rules and how to show notifications and appeals in your own UI.

Reports

Any signed-in user can report a thesis or reply as spam, scam, abuse, impersonation or other. Reports are weighted: When the weights on a post add up to 3, the post is hidden right away and waits for a moderator. A thesis.removed event goes out on the streams. People whose reports are rejected again and again cannot report for 30 days. Their reports then fail with reporting_paused, and they get a reporting_paused notification.

Warnings and pauses

Both can be appealed. A warning or pause whose post is restored is taken back, and a pause it caused is lifted.

Moderator decisions

Notifications

The affected person gets a notification for every decision. Each has a kind and a ready-made English text. People see their notifications at id.cabalspy.xyz/me/notifications, and the thesis widget shows a banner with a link there when something is unread. Platforms with their own UI read them through the APIs below.

The notification object

integer
Notification id, used to appeal.
string
One of the kinds above.
string
Ready-made English text for the person.
object
Details: thesis_id, chain, mint and excerpt (the first 140 characters of the post) where a post is concerned, until for pauses, note for appeal decisions.
string
ISO timestamp.
boolean
Whether the person has seen it.
boolean
Whether the decision can be appealed.
string
Status of an appeal against it: pending, accepted, rejected, or null when none was sent.
Notification

Appeals

An appealable decision can be appealed within 30 days, once per decision, with an explanation of 10 to 1,000 characters. A moderator reviews it. When an appeal is accepted, the post is visible again and the warning or pause is taken back. The person gets appeal_accepted or appeal_rejected with the moderator’s note.

Data API

Read and appeal in the name of one of your users, with your API key. The user must have granted your app the scope thesis and be within your plan’s user limit, as for every thesis write.

GET /v1/theses/notifications

string
required
The user.
Response
items holds the 50 newest notifications, newest first.

POST /v1/theses/appeal

string
required
The user.
integer
required
The notification to appeal.
string
required
The user’s explanation, 10 to 1,000 characters.
The response is 201 with {"appealed": true}. Besides the appeal errors above, both endpoints return the usual write errors missing_parameter, consent_required, plan_user_limit and sandbox_user.

Browser API

With the signed-in user’s access token (scope thesis) on the browser API: GET /thesis/v1/tokens/{chain}/{mint}/me also returns notices: unread (count), latest (the text of the newest notification, or null when nothing is unread) and url (https://id.cabalspy.xyz/me/notifications), so you can show the same banner as the widget.