Legal

Privacy Notice

This page is generated from the deployment’s data inventory. A notice written separately from the system describes what somebody believed on the day they wrote it; this one is missing a category only if the inventory is.

Operator and legal review required. This notice describes what the system does, accurately and in full. It makes no claim of compliance with GDPR, CCPA or any other regime, because compliance is a legal assessment nobody has performed here. The controller identity, the lawful basis and any data-transfer position are marked [REVIEW] and must be supplied before this can be relied on.

Who is responsible

[REVIEW] The legal entity acting as controller, its registered address, and a data protection contact are not stated. Inventing them would be worse than omitting them.

For anything factual about what is stored, the table below is the answer, and beta@stonereason.com reaches a person.

What is stored

Fifteen categories. Every durable store in the deployment appears here.

WhatWhyFields Kept forWho can read it
AccountsTo know who is signed in, and to let them sign in again.Email address, an Argon2id password verifier, account state, email verification state, when it was created, a session epoch.While the account exists. A closed account keeps its row, because payment and audit history refer to it; it can no longer authenticate.The person themselves. An operator sees the address and the states, never the verifier.
SessionsTo keep somebody signed in without asking for a password on every page.A SHA-256 digest of the session id, the account it belongs to, when it began, when it was last seen, the browser's user agent, a CSRF token.Until it expires, is signed out, or the password changes — which ends every session at once.The person themselves, on their settings page. An operator sees that sessions exist, never their ids.
Organizations and membershipsTo hold projects for a tenant rather than for a person, so work outlives one account.Organization id, name, when it was created, who owns it, membership rows with roles.While the organization exists.Members of that organization. An operator, through the console.
ProjectsThe commercial isolation unit: what a workload may reach, and what it may spend.Project id, display name, status, environment, allowed networks, allowed capabilities, quota and rate policy.While the project exists.The organization's members. An operator, through the console.
API key metadataTo authenticate a request and decide what it may reach.Key id, display name, status, scope (networks, capabilities, transports, environment), an IP allowlist where set, when it was created and last used, and a verifier.While the key exists. A revoked key keeps its row so its past requests stay attributable.The organization's members. An operator sees metadata only.
Usage accountingTo enforce a quota and to show a customer what they have used.Per project and per window: request counts, response bytes, event deliveries, refusal counts.Quota state is durable for the window it belongs to. Aggregates are bounded.The organization's members. An operator.
Request logsSo a customer can see what their keys did, and an operator can answer a support question without guessing.Timestamp, request id, project id, key id, network, method, transport, outcome, latency, response bytes, upstream call counts.Bounded: the newest are kept and older ones are dropped. An operational record, not an archive.The organization's members, on their usage page. An operator, through the console. The records are identical.
Beta analyticsTo answer whether somebody who signed up ever made a successful call, and where people stop.Event kind, when, and the ids it is about (account, organization, project, key, request). Acquisition context where a visitor's own URL carried it: the landing path, the referring host, and UTM source, medium and campaign.90 days for events. Whether a stage was reached outlives the event, or a busy month would make every customer look new.An operator, through the console. Not shared with anybody.
PaymentsTo watch for a payment you are expecting and tell you when it arrives and settles.Watch id, network, asset, recipient address, routing value, expected amount, match and finality policy, creation height, a cursor, and the occurrence identity of anything detected.While the watch is held, plus its receipt.The organization's members. An operator.
Webhook configurationTo deliver a payment event to your endpoint and let you verify it came from here.Endpoint URL, status, a signing secret, delivery attempts and their outcomes.While the endpoint exists.The organization's members. **An operator cannot retrieve a signing secret.**
Support requestsTo answer a question somebody asked.Category, subject, the message, state, and safe context: account, organization, project, page, time, and a request id where given. Notes from either side, with internal notes marked.Bounded. Closed requests are dropped first; an open one is never dropped.The person who opened it, minus internal notes. An operator.
Security eventsSo a customer can see what happened to their organization, and an operator can answer 'was this us'.When, what kind, which organization, which account, the object acted on, and a short note.Bounded per organization.The organization's members. An operator.
Administrative authorityTo decide who may operate this deployment.Which accounts are administrators and at what level, a TOTP secret per administrator, single-use recovery code digests, administrative session digests, and whether a bootstrap credential is still unrotated.While the authority exists. Withdrawing it removes the second factor and ends the sessions.Operators, through the console.
Admin auditSo every consequential thing an operator does is attributable.When, which administrator, what action, on what subject, the reason they gave, and what changed.Bounded, newest kept.Operators.
Published incidentsTo tell every customer what is wrong, deliberately.Title, impact, components, when it started and resolved, and an append-only list of updates.Bounded history; an open incident is never dropped.Everybody. This is the public status page.

What is never stored

Per category, and by construction rather than by policy — in most cases the record has no field that could hold it.

  • Accounts: The password itself is never stored, in any form that could be reversed. Nothing can reveal it, including us.
  • Sessions: The session id is never stored. Only a digest of it.
  • Organizations and memberships: No billing details, because nothing is billed.
  • Projects: No price, no plan name, no tier. There is nowhere in the record for one to appear.
  • API key metadata: The key secret is never stored. It exists in exactly one response body and nowhere else — not for support, not for an operator, not for us.
  • Usage accounting: No per-end-user data. This counts a project's calls, not a project's customers.
  • Request logs: No request body, no response body, no headers, no key. The record has never had a field for any of them, so there is nothing to redact.
  • Beta analytics: No third-party pixel, no advertising identifier, no cookie shared with anybody, and nothing that follows a person off this site. The referring host is kept and the referring URL is not — the other site's path is their visitor's business. A property whose name looks like a credential is refused rather than stored.
  • Payments: No custody and no private key. The addresses are yours; StoneReason only reads them.
  • Webhook configuration: A signing secret is never rendered after it is issued.
  • Support requests: An API key, an authorization header, a password, a private key or a request body cannot be attached. The guard refuses a field whose name looks like any of them.
  • Security events: Never a secret, a password or a token. The note is a sentence, not a payload.
  • Administrative authority: A TOTP secret is a shared secret and has to be stored to verify a code; it is never rendered after enrolment. Recovery codes are stored as digests.
  • Admin audit: Never a secret. The reason is a sentence an operator typed.
  • Published incidents: No provider name and no internal topology. An update is written for customers to read.

Cookies and browser storage

Three cookies, all of them strictly necessary. Nothing else is written to your browser.

NameKindPurpose LifetimeFlags
__Host-sr_sessionCookieKeeps you signed in to the dashboard.30 days, or until you sign out or change your password.HttpOnly, Secure, SameSite=Lax
__Host-sr_formCookieProves that a sign-up or sign-in form came from this site, so another site cannot make your browser submit one.One hour.HttpOnly, Secure, SameSite=Strict, __Host- prefixed
sr_opsCookieAn operator's administrative session. Never set for a customer.30 minutes, and 10 minutes idle.HttpOnly, SameSite=Strict

What is not used

There is no consent banner, and that is a decision rather than an oversight. Every cookie above is strictly necessary and there is no analytics, advertising or third-party storage to consent to. A banner here would be asking permission for something that is not happening, which teaches people to click through the ones that matter.

Where the data goes

Your choices

Last updated with the deployment. This page is part of the site build.