Skip to content

Blog: subscribe and unsubscribe from the newsletter #122

Description

@Adron

Endpoints

  • POST /api/blog/subscribe — {email}, double opt-in (a confirmation email follows).
  • GET /api/blog/subscribe/confirm — the public confirmation link; likely belongs in the browser, not the app.
  • GET/POST /api/blog/unsubscribe — the POST form is the RFC-8058 one-click target.

Acceptance criteria

  • SubscribeToBlogAsync(email) and the unsubscribe counterpart; shapes verified live (use a throwaway address — do not subscribe the test account's real inbox).
  • A subscribe control in Settings, pre-filled with the account email, stating that a confirmation email follows.
  • Unsubscribe available in the same place.
  • Confirmation links open in the OS browser.

Activity

  1. added
    parityWeb/API feature-parity work
    P3Nice to have / low desktop value
    on Sep 15, 2026
  2. Adron commented on Sep 16, 2026

    @Adron
    MemberAuthor

    Implemented in #172 — work continues in the PR from here. Shipped together because #121 is the decision that determines what #122 can be.

    #121: browser handoff. No public blog-read endpoint — /api/blog, /api/blog/posts and /api/blog/list all 404, and the only other blog routes are admin-only cookieAuth. Nothing to render in-app.

    #122: subscribe works; unsubscribe does not. Both GET and POST /api/blog/unsubscribe take only a ?token= from the email footer, so an app knowing just the address cannot unsubscribe anyone. The panel says where the link lives instead of offering a control that can't work. Subscribe is double opt-in and the UI says so explicitly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Nice to have / low desktop valuearea:blogArea: blogparityWeb/API feature-parity work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions