Repository navigation
Add a Data Processing Agreement link to Settings → License on Cloud - #1511
Merged
Merged
Conversation
Paid Cloud workspaces get a card on the licence page that asks the licence site for a one-hour link to its self-service DPA and opens it in a new tab. The agreement, acceptance record, PDF and email all live on the licence site; the backend only vouches, with the service token, for the signed-in admin's own workspace key. Trials and self-hosted installations see nothing (the endpoint answers 404 off Cloud).
helpcodeai
enabled auto-merge (squash)
November 4, 2026 14:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Paid Cloud workspaces get a "Data Processing Agreement" card under Settings → License. Its button asks the licence site for a one-hour link to the self-service DPA (HelpCode-ai/anythingmcp-website#502) and opens it in a new tab. There the admin accepts the agreement online, with no signature, and receives the PDF by email.
This server holds no DPA logic. It only vouches, with the service token, for the key of the workspace the signed-in admin belongs to, the same pattern as the billing portal.
Changes
POST /api/license/dpa-link(ADMIN, throttled to 10/min):LicenseService.createDpaLinksends the workspace key, the org id and name, the admin's email and name, and an optional page locale to/api/dpa/sessionon the licence site. Trials and community are refused before any call.license.dpaLink();/settings/license, with en/de/it messages;Type
Testing
license.service.spec.tscovers the payload and service token, the refused trial, and the site's error passed through.packages/backend:npx jest --maxWorkers=2 src/license/license.service.spec.ts src/license/license.controller.spec.ts→ 67/67 pass.npx tsc --noEmit -p tsconfig.json→ clean.npx eslinton the changed files → clean.packages/frontend:npx tsc --noEmit -p tsconfig.json→ clean;npx eslinton the changed files → 3 warnings, all already inpage.tsx(lines 89 and 97);npx playwright test tests/e2e/dpa-link.spec.ts→ 2/2 pass: a paid plan opens the stubbed link in a new tab with{ locale: 'en' }, and a trial has no card.Checklist
Related Issues
Relates to HelpCode-ai/anythingmcp-website#502. It must be deployed after that PR.