Link sharing
Every report, dashboard, dataset, and workspace in OneAnalytics can be shared via a sharing grant — the same API primitive regardless of audience (user, team, exec role, public link, embed).
From the UI
Click Share (top-right) on any report:
- To specific users — type an email. Existing users get access instantly; non-users get an invite email.
- To a team — picks up SCIM-synced groups or manually-created teams.
- To an executive role — the grant is evaluated per user based on role at query time (not copy-at-grant-time).
- As a public link — anyone with the link. Optionally require a password and/or watermark.
- As an embed — generates a signed JWT and an
<iframe>snippet; see Embed.
Actions
Each grant carries a list of allowed actions:
view— open the reportdownload— CSV/PDF/Excel exportcomment— add threaded commentsedit— modify the report definition (not the underlying data)share— re-share to others
A grant with view only gets a read-only render with download and comment UI hidden.
Expiry
Grants can expire — pick a date or "in 7 days". After expiry the grant is tombstoned (kept for audit), and the principal gets a 403 with problem code share/expired.
Watermark
Enable watermark and every viewer sees their email address faintly tiled across the report. Good for sensitive material. The watermark is rendered server-side for PDF/PNG exports so it cannot be stripped client-side.
Password
Public links can require a password. Password is hashed with Argon2id server-side; failed attempts are rate-limited (5 per 5 minutes per IP).
API
curl -X POST https://api.analytics.rstglobal.in/v1/sharing/grants \
-H "Authorization: Bearer $OA_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"subject_type": "report",
"subject_id": "b3d3...uuid",
"principal_type": "link",
"actions": ["view", "comment"],
"watermark": true,
"expires_at": "2026-05-01T00:00:00Z"
}'
Response includes a link_url suitable for sending.
Revoke
From Share → Manage, click Revoke next to any grant. Takes effect on the next request — cached sessions are invalidated within 60 s.
Audit
Every grant create/update/revoke is written to the audit log with the actor, timestamp, and full grant payload.