Copyright © 2024-2025 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
User stories and use cases for the Linked Web Storage (LWS) spec.
This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C standards and drafts index.
This document was published by the Linked Web Storage Working Group as a Group Draft Note using the Note track.
Group Draft Notes are not endorsed by W3C nor its Members.
This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than a work in progress.
The W3C Patent Policy does not carry any licensing requirements or commitments on this document.
This document is governed by the 03 November 2023 W3C Process Document.
The LWS specifications aim to enable the development of web applications where data storage, entity authentication, access control, and application provider are all loosely coupled, as compared to the web of today where these are typically all tightly coupled, so changing one requires changing all, sometimes at a cost of all past data.
This document lists user stories and use-cases for the LWS specifications, as well as requirements identified as necessary to satisfy these use cases.
The use cases for the LWS specifications are documented below.
Generic Storage
As a user, I want a format-agnostic online storage system that supports any type of resource, so that I can perform Create, Read, Update, and Delete (CRUD) — including metadata and access-control modifications, as well as recovering previous versions—from any device at any time.
Context: This ensures seamless data management across devices, empowering users with full control over their resources.
Issues: #117, #97, #60, #63, #62, #69
Portable Storage
As a user, I want the ability to self-host my storage or switch between providers without losing my data, so that I retain data sovereignty and can withstand provider outages or migrations without data loss.
Context: Portability prevents vendor lock-in and enhances data sovereignty.
Issues: #30, #58, #140, #61
Offline Data Access
As a user, I want to access and modify my data offline, with automatic synchronization upon reconnection, so that I can work without a network and avoid data corruption or conflicts.
Context: Offline support is vital for users in areas with unreliable connectivity.
Issues: #138, #64, #65, #67
Large File Uploads
As a user, I want to upload large files with resumable uploads, so that interruptions don’t force me to restart the entire transfer.
Context: This improves usability for managing large media or data files.
Issues: #18
Sharing Access
As a data owner, I want to grant and revoke fine-grained permissions on my resources, so that collaborators have appropriate access and receive notifications when their permissions change.
Context: Granular control ensures secure and tailored data sharing.
Issues: #7, #27, #116, #148, #120, #98
Notifications for Permission Changes
As a collaborator, I want to receive notifications when my permissions on a resource are granted, revoked, or modified, so that I am informed about changes to my access rights in a timely manner. Context: Timely notifications help collaborators stay updated on their access to shared resources, enhancing collaboration and security. Issues: #116, #78
Profile Sharing
As a user, I want to maintain multiple profiles with distinct access controls, so that I can share specific information while keeping other data private.
Context: Multiple profiles support different personas or contexts (e.g., work vs. personal).
Issues: #29, #57
Group Sharing
As a user, I want to share data with dynamic groups (e.g., event attendees), so that membership and permissions update automatically as the group evolves.
Context: This simplifies access management for temporary or changing collaborations.
Issues: #38, #102
Administrative Assistant
As a user, I want to delegate specific permissions to an assistant, with audit logs tracking their actions, so that they can manage my data securely on my behalf.
Context: Delegation aids users needing assistance while maintaining oversight.
Issues: #10, #104, #118
Context-Aware Access Policies
As an administrator, I want to enforce access policies based on contextual factors like time or geolocation or relative location (near Bob), so that access to data adapts dynamically to real-world conditions.
Context: Context-aware policies enhance security and flexibility.
Issues: #17, #147, #94
Health Record Access
As a patient, I want to share specific health records with an AI assistant using delegated authorization, so that I can get a second opinion with audit logs ensuring accountability.
Context: This supports secure, audited health data sharing for informed decisions.
Issues: #11, #46, #54
Meeting Scheduling
As a user, I want to schedule meetings directly through my storage, with conflict detection for online and offline scenarios, so that I avoid double-booking.
Context: Integrated scheduling boosts productivity and coordination.
Issues: #3, #42
Real-Time Notifications
As a collaborator, I want real-time notifications when resources I access are updated, so that I stay informed without manual checks.
Context: Timely updates enhance collaboration efficiency.
Issues: #32, #79
Application Notifications
As a user, I want email or web push notifications for storage activity, so that I remain aware of important events.
Context: Notifications keep users engaged with their data.
Issues: #100
Universal Communication
As a user, I want direct messaging channels with other storage owners, so that I can collaborate seamlessly within the platform.
Context: Built-in communication strengthens user interaction.
Issues: #99, #22
Polling
As a user, I want to create and manage polls within my storage, so that I can gather opinions and feedback from others.
Context: Polls support decision-making and community engagement.
Issues: #144
Semantic Collaboration
As a user, I want to co-author structured content with others using permanent URIs and flexible permissions, so that collaboration is efficient and traceable.
Context: This enables advanced use cases like shared knowledge bases.
Issues: #146, #98
Personal Information Management
As a user, I want to manage my personal data in my storage and integrate it with non-Solid apps via some data transformation, so that I can use various apps without creating data silos.
Context: This promotes interoperability and user control.
Issues: #2
'Bring Your Own Data' Apps
As an app developer, I want my applications to store data in user's storage, with support for CRUD operations and store discovery, so that users retain ownership and control of their data.
Context: This shifts data ownership from apps to users.
Issues: #12, #120
Digital Goods Delivery
As a user, I want secure delivery of digital goods (e.g., software, media) with confirmation receipts, so that providers can deliver assets with minimal intervention.
Context: This ensures reliable digital product delivery.
Issues: #14
Data Integration
As an app developer, I want a standardized API to combine data from multiple sources, so that integrating diverse datasets is straightforward and efficient.
Context: Simplified integration reduces development complexity.
Issues: #26, #53, #88, #106
Business Data Access
As a business user, I want clear enforcement rules for data sharing, so that enterprise integrations comply with organizational policies.
Context: This supports secure enterprise use cases.
Issues: #27, #28
Timeseries Storage
As a user, I want to store timeseries data with resolution limits and multidimensional analysis support, so that I can efficiently analyze trends over time.
Context: This is critical for applications like IoT or analytics.
Issues: #6
Sensor Data Sharing
As a user, I want to share sensor data at varying levels of granularity without duplication, so that consumers receive only the detail they need.
Context: Efficient sharing reduces resource usage.
Issues: #8
Legal Reporting
As a data provider, I want verifiable proof of data sharing to support audit compliance, so that I can meet legal obligations even after access is revoked.
Context: This ensures transparency and accountability.
Issues: #9
Search Functionality
As a user, I want powerful search capabilities with contextual awareness and security enforcement, so that I can find relevant resources quickly and safely.
Context: Effective search is essential for large datasets.
Issues: #152, #87
Pagination & Filtering
As a user, I want efficient pagination, filtering, and ordering of search results, so that I can navigate large datasets easily.
Context: These features enhance data usability.
Issues: #103
SPARQL Queries
As a power user, I want support for SPARQL queries to perform complex searches and data analysis, so that I can extract insights from linked data.
Context: SPARQL enables advanced semantic web queries.
Issues: #45
Website Creation
As a user, I want to publish self-describing websites with persistent URIs, so that my content remains accessible and interoperable over time.
Context: This supports durable web publishing.
Issues: #31
Home Access
As a user, I want to access my storage from home devices with dynamic IPs, so that connectivity issues don’t prevent me from using my data.
Context: This ensures accessibility in home environments.
Issues: #105, #68
Contextual Interactions
As a user, I want context-aware display of interactions alongside content, so that I can understand permissions and history intuitively.
Context: This improves user understanding of data interactions.
Issues: #55
WebID Profile Interaction
As a user, I want clicking a WebID to display profiles and available actions, so that I can engage with contacts effortlessly.
Context: This enhances social and professional interactions.
Issues: #48, #47
Storage Listening
As an app developer, I want offline monitoring of storage changes, so that my applications stay synchronized even without connectivity.
Context: This supports robust offline app functionality.
Issues: #101
'End to End' Encryption
As a user, I want end-to-end encryption for all data storage and transfers, so that only authorized parties can decrypt and access my information.
Context: Encryption ensures data confidentiality.
Issues: #4, #44, #73, #74, #75, #76
Consent-Based Sharing
As a user, I want verifiable consent mechanisms with audit trails for data sharing, so that I can ensure compliance with privacy regulations.
Context: Consent management supports ethical data practices.
Issues: #141, #80, #81, #82, #83, #84, #85, #86
Legal Grounds Support
As a compliance officer, I want to define access policies based on legal grounds (e.g., GDPR), so that data sharing adheres to regulatory requirements.
Context: This ensures global compliance readiness.
Issues: #80, #141, #77
Storage Ownership
As a user, I want ownership assigned upon storage creation, so that I have full control from the outset.
Context: Immediate ownership clarifies user authority.
Issues: #43
Performant Access Control
As a user, I want access control mechanisms that are responsive and scalable, so that the system performs well even under heavy load.
Context: Performance is critical for large-scale use.
Issues: #72, #153, #71
Clear Error Messages
As a user, I want error messages that are clear and actionable, so that I can resolve issues quickly and without frustration.
Context: Good error handling enhances user experience.
Issues: #34
Identity & Credentials Management
As a user, I want to manage my identities and credentials locally, so that I control my authentication process directly from my device.
Context: Local management boosts security and autonomy.
Issues: #25, #90, #115, #153, #128
Authentication Mechanisms
As a user, I want support for modern authentication methods like passkeys, silent authentication, and script-friendly options, so that I can authenticate securely across diverse scenarios.
Context: Flexible authentication meets varied user needs.
Issues: #39, #41, #49, #50, #51, #114, #162, #129, #130, #136
Trust Mechanism for Storage Providers
As a Storage Provider, I want a mechanism to trust Identity Providers for authenticating entities, so that I can ensure only authenticated and authorized entities access the storage.
Context: This trust relationship is crucial for maintaining security in a decentralized system where multiple Identity Providers may be involved.
Issues: #129
API Protocol Decoupling
As a developer, I want APIs decoupled from HTTP, so that I can build local-first applications or use alternative protocols like gRPC or GraphQL.
Context: Decoupling enhances development flexibility.
Issues: #24
Backend Service Integration
As a service provider, I want secure authentication methods like mTLS or simpler alternatives for backend services, so that integration with LWS is seamless and secure.
Context: This ensures reliable backend connectivity.
Issues: #40, #56, #92
Storage Description and Discovery
As a user or application, I want to retrieve metadata about available storage and service capabilities, so that I can configure interactions appropriately and adapt to different storage behaviors.
Context: Describing server capabilities in a standardized way allows clients to dynamically adjust their operations, improves interoperability, and facilitates tooling or automation.
Issues: #21
Storage Flexibility
As a user, I want the ability to dynamically split or aggregate storage units, so that I can adjust capacity and organization as my needs evolve.
Context: Flexible storage supports scalability and customization.
Issues: #110, #136, #127, #69, #70
Hypermedia Authoring
As a developer, I want consistent mechanisms for authoring hypermedia representations (e.g., JSON-LD, Siren), so that clients can navigate and interact with APIs uniformly.
Context: Standardized hypermedia improves API usability.
Issues: #33, #124
The following requirements were identified and sufficient to satisfy the use cases above. This is a non-normative document and the workgroup may decide that some requirements are out of scope.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
---|---|---|---|---|---|---|---|---|---|---|
Generic Storage | ✓ | ✓ | ✓ | |||||||
Portable Storage | ✓ | ✓ | ✓ | |||||||
Sharing Access | ✓ | ✓ | ✓ | ✓ | ||||||
Profile Sharing | ✓ | ✓ | ✓ | ✓ | ||||||
Group Sharing | ✓ | ✓ | ✓ | ✓ | ||||||
Administrative Assistant | ✓ | ✓ | ✓ | ✓ | ||||||
Offline Data Access | ✓ | ✓ | ✓ |
Globally Unique Identifiers — Resources, including Entities and Storages, shall be uniquely identifiable globally. No two distinct Resources shall share the same Identifier (though a "collective" Resource with one Identifier may be comprised of several Resources, each with its own Identifier, and actions taken on the collective Resource can affect all the Resources which comprise the collective Resource). A Resource may be identifiable via multiple, distinct identifiers.
Use of Service Providers — The protocol shall provide a mechanism for Entities to delegate some functions to trusted Service Providers. Some interactions may require a trust relationship between Service Providers and Entities. In general, this should not impede the ability of an Entity to operate or self-host a service. Also, trust relationships are not transitive, in the sense that if an Entity trusts a Service Provider, e.g. an Identity Provider, it does not follow that another Service Provider the Entity interacts with, e.g. a Storage Provider, is under any obligation to trust said Identity Provider.
Issues: #127
Stories: Trust Mechanism for Storage Providers
Control of Storages — An Entity shall be able to control one or more Storages across one or more Storage Providers. A Storage shall have exactly one Controller.
Issues: #130
Stories: Storage Ownership
Delegation of Control — The system shall allow for an Entity to delegate control of a Storage to another Entity. Delegation could be temporary, i.e. have an expiration time, or not. An Entity shall be able to modify delegation at a later time, either by changing expiration or revoking it altogether.
Stories: Delegation of Control
Transfer of Control — The protocol shall allow for an Entity to transfer, i.e. irrevocably reassign control of a Storage to another Entity.
Stories: Delegation of Control
Storage Portability — The protocol shall allow for an Entity to port, i.e. move or transfer, the entire contents of a Storage from one Storage Provider to another. Once the move is complete, the previous Storage Provider shall be freed from any responsibility related to the Storage.
Issues: #140
Stories: Portable Storage
Adding, Updating, Deleting Resources in Storage — The protocol shall allow for Resources to be added, updated and/or deleted within a Storage by authorized Entities. In general the protocol shall allow for any type of resource to be stored in a Storage, however Storage Providers may impose certain limitations, such as of type or size.
Data Sharing — The protocol shall allow an Entity to grant access to a Resource it controls to another Entity. In other words, the first Entity may allow the other Entity to perform some operations (read, modify, remove...) on the Resource. Access grant could be temporary, i.e. have an expiration time, or not. The first Entity shall be able to modify delegation at a later time, either by changing the expiration time or revoking it altogether.
Issues: #27, #118
Stories: Sharing Access, Profile Sharing, Group Sharing, Health Record Access
Auditable Trail — The protocol shall make it possible for an authorized Entity to access an auditable log of all access requests and grants to Resources and all read/write/delete of Resources.
Issues: #84
Stories: Administrative Assistant, Legal Reporting, Health Record Access
Serialization Format — The protocol shall make it possible for data in a Storage to be serialized in a known format.
Stories: Data Integration, Personal Information Management
Offline Access and Synchronization — The protocol shall allow Entities to access and modify data even when disconnected from the network, with local changes synchronized to the online Storage once connectivity is restored. This includes providing strong guarantees against data corruption and robust conflict resolution to ensure data consistency after offline edits.
Stories: Offline Data Access, Storage Listening
Resumable Large Data Transfers — The protocol shall support efficient handling of large files and data streams, including the ability to resume interrupted uploads/downloads. This ensures that network or server interruptions do not force restarting an entire transfer, improving reliability for big file operations.
Issues: #18
Stories: Large File Uploads
Data Versioning — The protocol shall support maintaining and retrieving previous versions of Resources. Authorized Entities should be able to recover or inspect earlier versions of data (including metadata and access control states) to enable undoing changes, auditing modifications, or recovering from accidental deletions. This helps ensure data durability and traceability over time.
Stories: Generic Storage
Notification and Eventing — The protocol shall provide a mechanism to notify relevant Entities of significant events, such as changes to Resources or updates to access permissions. For example, if access rights on a Resource change or new data is available, the affected parties can be alerted in a timely manner. Notification delivery may be real-time (e.g., push/SSE) or via queued channels (e.g., email or inbox), respecting user preferences and privacy.
Issues: #32, #100, #101
Stories: Notifications for Permission Changes, Real-Time Notifications, Application Notifications
Access Request Handling — The protocol shall enable an Entity to request access to a Resource they are currently not authorized to use, and allow the Resource owner (or controller) to review and grant or deny such requests. There should be a standard way for a requester to signal a desire for access and for the owner to be notified and respond. This ensures that data owners can easily share data upon request without preemptively granting broad access.
Issues: #11, #28, #78, #79, #92
Stories: Health Record Access
Delegation of Access Rights — Beyond whole-storage control delegation, the protocol shall allow an Entity who has certain access rights on a Resource to delegate a subset of those rights to another Entity, if permitted by the original owner. Such sub-delegation may be temporary or scoped, and the original grantor (or the Resource owner) shall be able to revoke or modify the delegated rights at any time.
Issues: #10, #104
Stories: Administrative Assistant, Health Record Access
Contextual Access Control — The access control mechanisms shall support context-aware policies. An Entity should be able to impose additional conditions on Resource access based on context such as time windows, location, or group membership status. For instance, a policy could allow access only during certain hours, or only if the requesting party is within a specific role or group at the time.
Inter-User Communication — The protocol shall provide a mechanism for users (or their agents/applications) to exchange messages or data directly via their Storages in a standardized way, enabling built-in collaboration without relying on external messaging services. For example, a user should be able to send a message, notification, or invite to another user's Storage (with appropriate authorization), and the receiving user's client can retrieve or be alerted to this message.
Search and Query — The protocol shall support querying of data to help users and applications discover Resources based on content or metadata. It shall offer powerful search capabilities (e.g., full-text or attribute-based search) while enforcing access controls on results. To handle large result sets, the protocol shall provide features like pagination, filtering, and sorting of query results, and may support standard query languages (such as SPARQL) for advanced semantic queries over the data.
Issues: #45, #103, #152
Stories: Search Functionality, Pagination & Filtering, SPARQL Queries
Self-Descriptive and Discoverable APIs — The protocol shall include means for clients to discover available capabilities and navigate a Storage's data and access control interfaces uniformly. This could be achieved via hypermedia controls or standard descriptors in responses (e.g., JSON-LD links indicating available actions or endpoints). Servers should provide a discoverable description of their supported protocol versions, extensions, or features.
End-to-End Encryption — The protocol shall enable end-to-end encryption of data such that data stored or transmitted is unreadable to anyone except the authorized parties. Even Storage Providers or network intermediaries cannot decrypt the content (only the data owner and intended recipients can). End-to-end encryption should be achievable for data at rest and in transit, using standard algorithms.
Data Integrity Verification — The protocol shall incorporate mechanisms to ensure and verify the integrity of stored data. Authorized Entities should be able to detect if data has been tampered with or corrupted (whether at rest or in transit). For example, the system may use cryptographic hashes, signatures, or checksums so clients can confirm that a Resource retrieved from Storage is exactly as originally stored by the owner.
Stories: Legal Reporting
Consent-Based Data Sharing —
The protocol shall provide a means to record and honor user consent for data sharing, including details on who, what, purpose, and duration.
There shall be a verifiable, auditable record of consent (e.g., receipts or tokens) that is revocable, ensuring access removal upon withdrawal.
Legal Basis Enforcement — The protocol shall support associating access control decisions with legal bases or policies. For example, implementers should be able to tag data access rules with specific legal grounds (such as "Consent – GDPR Article 6(1)(a)" or "Contract – GDPR Article 6(1)(b)"), and record these as metadata alongside audit trails.
User-Centric Identity Management — The protocol shall integrate with identity systems in a way that empowers users to control their credentials and identifiers. Users should be able to manage self-sovereign identities or locally stored credentials and authenticate to a Storage using an identity solution they trust, accommodating standards like decentralized identifiers or client-managed credentials.
Issues: #25, #90, #115, #128
Stories: Identity & Credentials Management
Modern Authentication Methods — The protocol shall support contemporary web authentication methods, such as passkeys or WebAuthn for passwordless login, "silent" non-interactive flows for scripts, and client-credentials or token-based auth for automation. All methods must result in a verified Entity identity recognized by the Storage.
Trusted Identity Providers — The protocol shall enable Storage Providers to establish trust relationships with Identity Providers of their choosing, rather than blindly accepting any identity source. Trust is non-transitive: a Storage only accepts credentials from IdPs it explicitly trusts.
Issues: #129
Stories: Trust Mechanism for Storage Providers
Protocol Binding Independence — The core data access and identity interactions shall be defined abstractly, decoupled from any single transport or encoding. While HTTP(S) is expected, the protocol's semantics must be mappable to alternative transports (e.g., gRPC, GraphQL over WebSocket, local IPC) without changing its fundamental model.
Issues: #24
Stories: API Protocol Decoupling
Service Integration Authentication — The protocol shall support secure authentication and authorization flows suitable for server-to-server and backend service integration, such as mutual TLS, signed JWT-based service credentials, or scoped long-lived tokens, enabling trusted services to access user Storages without interactive login.
Scalable Storage Management — The protocol shall permit flexible management of an Entity's data across multiple storage units or providers, allowing logical unification of disparate back-ends. Clients should experience a single coherent Storage view even if data is split or migrated across providers, supporting scenarios like jurisdictional partitioning or provider failover.
Performance and Scalability — The protocol and its implementations shall be designed for high performance at scale. Access control checks and data operations should incur minimal overhead, and the design should allow batching, caching, and distributed/clustered deployments to meet typical web performance needs.
Issues: #72
Stories: Performant Access Control
Clear Error Messaging — The protocol shall specify clear and standardized error messages for various failure conditions, including meaningful status codes and human-readable information indicating the cause and possible remediation.
Issues: #34
Stories: Clear Error Messages
Profile Management — The protocol shall support Entities having multiple distinct Profiles (e.g., "work" vs. "personal"), each with its own identifiers, metadata namespaces and access-control rules, so that data can be selectively shared under different personas.
Stories: Profile Sharing
Group-Based Access Control — The protocol shall allow Controllers to define and manage Groups of Entities, apply access control rules at the group level, and propagate membership changes dynamically so that permissions update automatically as the group evolves.
View-Based Data Sharing — The protocol shall enable Controllers to define and expose derived "views" of a Resource (e.g., filtered, aggregated or redacted subsets) such that recipients see only the authorized slice without duplicating the underlying data.
Federated Data Queries — The protocol shall support Clients performing queries across multiple Storages (including SPARQL federation), aggregating and returning results transparently while enforcing each Storage's access controls.
Issues: #88
Stories: Data Integration, SPARQL Queries
Delivery Receipts — The protocol shall provide a mechanism for sending verifiable receipts or acknowledgements when Resources (such as digital goods) are created, modified, delivered or accessed, ensuring publishers can confirm successful delivery or consumption.
Issues: #85
Stories: Digital Goods Delivery
Collaborative Editing — The protocol shall define optional mechanisms (e.g. locking, optimistic concurrency or CRDT-based merges) to allow multiple Entities to co-author or edit the same Resource concurrently, with built-in conflict detection and resolution.
Issues: #146
Stories: Semantic Collaboration
Timeseries Data Support — The protocol shall include primitives for storing, querying and aggregating timeseries Resources—supporting configurable resolution limits and multidimensional analysis for data like IoT streams or metrics.
Issues: #6
Stories: Timeseries Storage
Self-Describing Website Publication — The protocol shall support publishing self-describing websites with persistent URIs directly from a Storage, enabling durable, interoperable content hosting.
Issues: #31
Stories: Website Creation
Network Flexibility — The protocol shall ensure Storages remain accessible from home or mobile environments with dynamic IPs or NAT, providing mechanisms (e.g., NAT traversal, DNS aliasing) so connectivity isn't impeded by changing network endpoints.
Bring-Your-Own-Data Apps — The protocol shall enable third-party applications to store, read, update, and delete their data within user-managed Storages, and to discover available Storage capabilities, so that users retain data ownership and sovereignty over app-generated content.
Profile Interaction UI — The protocol shall define a standard method for clients to fetch and display an Entity's profile (e.g., WebID), along with supported actions (follow, message, share), so users can engage seamlessly with contacts.
Personal Data Projection — The protocol shall support projection or transformation of personal data into formats consumable by non-LWS applications (e.g., JSON, vCard), without duplicating underlying resources, to prevent data silos.
Issues: #2
Stories: Personal Information Management
The glossary provides definitions of key terms and concepts used throughout this specification. It serves as a quick reference to ensure clarity and a shared understanding among readers and contributors. By standardizing terminology, the glossary supports consistent communication and alignment in interpreting this specification.