Conversation
privacy.html
Outdated
| <li><strong>api.t-pen.org</strong> — TPEN3 services API | ||
| (<a href="https://api.t-pen.org/API.html" target="_blank" | ||
| rel="noopener noreferrer">documentation</a>)</li> | ||
| <li><strong>static.t-pen.org</strong> — Published project manifests</li> |
There was a problem hiding this comment.
"Published Project Resources" is probably more clear, since it may not just be Manifests and is always a thing we create for a specific project.
privacy.html
Outdated
| <p> | ||
| Our services are available at: | ||
| </p> | ||
| <ul> |
There was a problem hiding this comment.
This feels like a table layout would be tidier.
There was a problem hiding this comment.
Should this whole thing be a markdown file on three.t-pen.org? It doesn't feel like an interface.
privacy.html
Outdated
| <h3>A. Account & Authentication Data</h3> | ||
| <p> | ||
| When you create an account, we collect your <strong>email address</strong> through our authentication | ||
| provider, Auth0. Authentication generates a JSON Web Token (JWT) that contains your user ID, an agent |
There was a problem hiding this comment.
It might be worth rephrasing this as Auth0 is the identity provider for Rerum services, which this is one of. The public agent IRI is created and associated with the login token. T-PEN.org does not display or share user emails through its services.
privacy.html
Outdated
| You may optionally provide the following for your public profile. None of these are required: | ||
| </p> | ||
| <ul> | ||
| <li>Display name</li> |
There was a problem hiding this comment.
Display name is generated from your email handle by default so if it is not changed it might be usable for some identifying mark.
privacy.html
Outdated
| identifier (IRI), and an expiration timestamp. No passwords are stored by TPEN directly. | ||
| </p> | ||
|
|
||
| <h3>B. Profile Information (Optional)</h3> |
There was a problem hiding this comment.
More than "optional" this is all opt-in sharing with other TPEN Users.
| <h3>C. User-Generated Content</h3> | ||
| <ul> | ||
| <li><strong>Transcriptions and annotations</strong> — Stored in RERUM (our linked open data | ||
| store) and publicly accessible by design for open scholarship</li> |
There was a problem hiding this comment.
is it worth saying that they URLs are obscure but openly available?
| store) and publicly accessible by design for open scholarship</li> | ||
| <li><strong>Feedback and bug reports</strong> — Submitted through TPEN and posted as GitHub Issues | ||
| (includes your description and the page URL you submitted from)</li> | ||
| <li><strong>Transcription drafts</strong> — Auto-saved in your browser's local storage to prevent |
There was a problem hiding this comment.
Also the downloaded resources and idToken, if this is the place for that.
privacy.html
Outdated
|
|
||
| <h3>D. Project & Collaboration Data</h3> | ||
| <ul> | ||
| <li>Project membership and your assigned role (Owner, Leader, Contributor, or Viewer)</li> |
privacy.html
Outdated
| <h3>D. Project & Collaboration Data</h3> | ||
| <ul> | ||
| <li>Project membership and your assigned role (Owner, Leader, Contributor, or Viewer)</li> | ||
| <li>Email addresses of users you invite to collaborate on projects</li> |
There was a problem hiding this comment.
Do we collect this or just send the emails? I thought we had an "invite code" to reconnect these later?
privacy.html
Outdated
| <ul> | ||
| <li>Project membership and your assigned role (Owner, Leader, Contributor, or Viewer)</li> | ||
| <li>Email addresses of users you invite to collaborate on projects</li> | ||
| <li>Project modification timestamps</li> |
There was a problem hiding this comment.
This isn't a data collection thing.
privacy.html
Outdated
|
|
||
| <h3>E. Activity Data</h3> | ||
| <p> | ||
| We track limited activity metrics on the server to power features like the "continue working" panel on |
There was a problem hiding this comment.
"per User metrics" is maybe more specific?
privacy.html
Outdated
| <td>Legitimate interest (user experience)</td> | ||
| </tr> | ||
| <tr> | ||
| <td>Auto-save transcription drafts</td> |
There was a problem hiding this comment.
These aren't saved on the server or even sent through the Internet, so I don't think we need to claim them.
privacy.html
Outdated
| <td>Legitimate interest (prevent data loss)</td> | ||
| </tr> | ||
| <tr> | ||
| <td>Process feedback and bug reports</td> |
There was a problem hiding this comment.
This is a GitHub submission, as we state above, so I don't think this is User Information.
privacy.html
Outdated
| <h3>A. Publicly Accessible Information</h3> | ||
| <ul> | ||
| <li><strong>Transcriptions and annotations</strong> are publicly accessible via | ||
| <a href="https://store.rerum.io" target="_blank" rel="noopener noreferrer">RERUM</a> and |
There was a problem hiding this comment.
I would link rerum.io, as a user-facing site rather than store.rerum.io, which would be confusing.
privacy.html
Outdated
| <h3>B. Shared with Project Collaborators</h3> | ||
| <p> | ||
| Members of projects you belong to can see your display name and role within that project. Email | ||
| addresses are used for sending invitations but are not displayed to other collaborators through the |
There was a problem hiding this comment.
I don't think it is available to the interfaces at all, which maybe is worth noting.
privacy.html
Outdated
| When you submit feedback or a bug report through TPEN, it creates a public GitHub Issue in our | ||
| <a href="https://github.com/CenterForDigitalHumanities/TPEN-Static" target="_blank" | ||
| rel="noopener noreferrer">TPEN-Static repository</a>. The issue includes your description text and the page URL from which you submitted. | ||
| Your email address is not included in the GitHub Issue. |
There was a problem hiding this comment.
No user information at all is included in the reports. Only what they type and where they came from.
privacy.html
Outdated
| <strong>RERUM</strong> (store.rerum.io) is our linked open data store for transcriptions and | ||
| annotations. RERUM is operated by the Research Computing Group at Saint Louis University. Transcriptions | ||
| stored in RERUM are publicly accessible by design to support open scholarship and are attributed to user | ||
| agent identifiers. |
| </p> | ||
|
|
||
| <h3>C. Email Delivery</h3> | ||
| <p> |
There was a problem hiding this comment.
Not quite. We use a mailrelay server, so SLU only sees the address because it isn't encrypted (as far as I know). There is an option for secure mail which we might be using. Point is, I don't think this needs to be disclosed other than to say it is only used for sending invites and is not stored for any purpose.
privacy.html
Outdated
| rel="noopener noreferrer">jsDelivr Privacy Policy</a></td> | ||
| </tr> | ||
| <tr> | ||
| <td>unpkg.com</td> |
There was a problem hiding this comment.
Do we really have Chota in the TPEN stack somewhere? I bet we can take that out.
privacy.html
Outdated
| rel="noopener noreferrer">Pixabay Privacy Policy</a></td> | ||
| </tr> | ||
| <tr> | ||
| <td>OpenCV (docs.opencv.org)</td> |
There was a problem hiding this comment.
I think libraries used inside of interfaces can be handwaved to say that TPEN3 is built on modular interfaces that we do not completely control and may call on libraries and frameworks served over CDNs.
privacy.html
Outdated
| rel="noopener noreferrer">OpenCV Privacy Policy</a></td> | ||
| </tr> | ||
| <tr> | ||
| <td>Lucid (corporate-assets.lucid.co)</td> |
privacy.html
Outdated
| </tbody> | ||
| </table> | ||
|
|
||
| <h3>F. External IIIF Servers</h3> |
There was a problem hiding this comment.
I would get rid of IIIF language here. It is the case for all Internet Resources, specifically images and manifest documents.
privacy.html
Outdated
|
|
||
| <h3>C. What Happens When You Log Out</h3> | ||
| <p> | ||
| All localStorage data is cleared when you log out, including your authentication token, cached resources, |
There was a problem hiding this comment.
IS this true? I think we just get rid of the token.
privacy.html
Outdated
| and transcription drafts. | ||
| </p> | ||
|
|
||
| <h3>D. What We Do Not Use</h3> |
privacy.html
Outdated
| <ul> | ||
| <li><strong>Encrypted transmission</strong> — All data is transmitted over HTTPS (TLS)</li> | ||
| <li><strong>Token-based authentication</strong> — JWT tokens with automatic expiration</li> | ||
| <li><strong>Secure cookie attributes</strong> — <code>Secure</code> and |
There was a problem hiding this comment.
This is so minimal I would not keep restating it.
privacy.html
Outdated
| <li><strong>Open-source codebase</strong> — Publicly auditable code allows community | ||
| security review</li> | ||
| <li><strong>Token URL cleanup</strong> — Authentication tokens are immediately removed from | ||
| the browser URL after login to prevent accidental sharing</li> |
privacy.html
Outdated
| on shared computers. | ||
| </p> | ||
| <p> | ||
| In the event of a data breach affecting your personal information, we will notify affected users and |
There was a problem hiding this comment.
I wouldn't make this promise, since we do not have a good way to notify people.
privacy.html
Outdated
|
|
||
| <h3>C. Local Storage</h3> | ||
| <p> | ||
| All browser-stored data (authentication tokens, drafts, cached resources) is cleared immediately when |
There was a problem hiding this comment.
again, maybe not, but it could be
| rights under the General Data Protection Regulation: | ||
| </p> | ||
| <ul> | ||
| <li><strong>Right of Access</strong> (Article 15) — Request a copy of the personal data we hold |
There was a problem hiding this comment.
We should ticket this as a simple report we can just run on someone so they can click on their own.
| <li><strong>Right to Erasure</strong> (Article 17) — Request deletion of your personal data, | ||
| subject to the scholarly archiving exception in Article 17(3)(d) for transcriptions stored in | ||
| RERUM</li> | ||
| <li><strong>Right to Data Portability</strong> (Article 20) — Request your personal data in a |
privacy.html
Outdated
| the sources, purposes, and third parties with whom we share it</li> | ||
| <li><strong>Right to Delete</strong> — Request deletion of your personal information, subject to | ||
| exceptions for scholarly research integrity</li> | ||
| <li><strong>Right to Correct</strong> — Request correction of inaccurate personal information</li> |
There was a problem hiding this comment.
maybe just say that all public information is editable by the user.
privacy.html
Outdated
| <ul> | ||
| <li><a href="https://three.t-pen.org" target="_blank" rel="noopener noreferrer">TPEN3 Home</a></li> | ||
| <li><a href="/about">About TPEN</a></li> | ||
| <li><a href="https://github.com/CenterForDigitalHumanities/TPEN-interfaces" target="_blank" |
There was a problem hiding this comment.
maybe just the organization page here?
privacy.html
Outdated
| <h3>D. Additional Resources</h3> | ||
| <ul> | ||
| <li><a href="https://three.t-pen.org" target="_blank" rel="noopener noreferrer">TPEN3 Home</a></li> | ||
| <li><a href="/about">About TPEN</a></li> |
|
Thanks for the thorough review! All comments have been addressed. Here's the breakdown: Section 1 — Who We Are
Section 2 — Information We Collect
Section 3 — How We Use Your Information
Section 4 — Information Sharing
Section 5 — Third-Party Services
Section 6 — Cookies & Local Storage
Section 7 — Security
Section 8 — Data Retention
Sections 9–10 — GDPR / CCPA Rights
Section 13 — Changes & Contact
Meta
|
|
The claim "Email addresses are not available to the TPEN interfaces at all" is incorrect. The interfaces can and do access emails in these cases:
Would you like me to correct lines 215 and 340 in privacy.html to reflect this? The manage page fallback (#2) is the most notable — it means other project members can potentially see your email. It does seem like Classes may be able to get to that information, in which case it could be shown by an interface. I am not sure where the API will respond with those E-mail addresses, but essentially if TPEN Services returns it as part of a response an interface can pick it up. |
|
Okay.
These are on their way out, so we can remove them from the specific call-outs. RE:Emails — I think we should outline how we use these more clearly. TPEN doesn't store them (except invites) but they are encoded in the Rerum User payload from Auth0 so any application you are authenticated with will be able to see it. When you invite another user, they see the email and not just the user from which the invite was sent (maybe we don't need to do that). I think we definitly don't need to show the email as a fallback if there is no displayName, as we already say the handle could be used. We should just show the pre-@ bit in that case. |
Closes #474
This prompted an audit to find places where TPEN Services and TPEN Interfaces may expose an E-mail address. Any endpoint where E-mail strings end up as part of a response body, and anywhere Interfaces may know the E-mail enough to where the code could expose it.
This audit was performed by Claude Code, and only performed once just as a general "let's see what we find". For an exhaustive list more effort is required.
Interfaces

mainbranch auditServices

developmentbranch audit