Diffinery

codician/diffinerypublic

Open-source, agent-first GitHub and GitHub Actions alternative that runs on your own Cloudflare account: git hosting, pull requests, code review and drop-in GitHub Actions YAML on Workers, Durable Objects, R2 and Containers.

Docs: the morning digest in the API reference (#171)

POST /diffinery/emails/digest (#168) gets its summary, limit and scope,
and the notification settings entry names the digest's fields.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016q5wwBFck8JHq14gHUM2CL
Canberk Demirci authored · GitHub committed signed1 parent 7041870commit 5faec44bed4d4a0979b56272409dd0c66ff73e09Browse files
1 file changed+3−1
modifiedapps/diffinery/src/docs/api-meta.ts+3−1View file
@@ -104,6 +104,7 @@
104104 "PUT /notifications": { scope: "write" },
105105 "PUT /diffinery/notification-settings": { scope: "write" },
106106 "POST /diffinery/emails/test": { scope: "write" },
107+ "POST /diffinery/emails/digest": { scope: "write" },
107108 "POST /diffinery/admin/emails/samples": { scope: "admin" },
108109 "POST /diffinery/email/verification": { scope: "write" },
109110 "GET /diffinery/admin/email/suppressions": { scope: "read" },
@@ -1547,13 +1548,14 @@
15471548 },
15481549 "DELETE /repos/{owner}/{repo}/subscription": { summary: "Stop watching a repository", description: "Back to participating notifications.", access: "read", status: 204 },
15491550 "GET /diffinery/notification-settings": { summary: "Get your notification settings", access: "account" },
1550- "PUT /diffinery/notification-settings": { summary: "Update your notification settings", description: "Send only the groups you want to change.", access: "account" },
1551+ "PUT /diffinery/notification-settings": { summary: "Update your notification settings", description: "Send only the groups you want to change. The morning digest is `digest`: `email` (on or off), `hour` (0 to 23), `timeZone` (an IANA time zone such as `Europe/Istanbul` or `UTC`) and `weekends`; 422 for an hour or time zone it can't use. See /docs/agents/today#the-morning-digest.", access: "account" },
15511552 "GET /diffinery/emails": {
15521553 summary: "List emails sent to you",
15531554 access: "account",
15541555 query: { kind: ["string", "Only this kind of email."], since: ["string", "ISO timestamp."], per_page: ["integer", "At most this many (default 50)."], all: ["string", "`1` for everyone's (site admins)."] },
15551556 },
15561557 "POST /diffinery/emails/test": { summary: "Send yourself a test email", description: "At most 5 an hour; more answer 429 `you can send at most 5 test emails an hour; try again later`.", access: "account" },
1558+ "POST /diffinery/emails/digest": { summary: "Send yourself the morning digest now", description: "Your Today digest, sent now even when the digest is off or has nothing in it, covering what happened since the last one. At most 3 an hour; more answer 429. See /docs/agents/today#the-morning-digest.", access: "account" },
15571559 "GET /diffinery/email": {
15581560 summary: "Your email address and whether it is suppressed",
15591561 description: "`suppressed` is null, or why Diffinery sends nothing to your address: `reason` (`hard-bounce`, `complaint` or `manual`), `detail`, `source`, `created_at` and `owner_can_lift`.",