This document provides definitions, use cases, and requirements for making device APIs more privacy-friendly.

This document is an editors draft and currently does not reflect consensus of the WG but rather is a starting point for further work. It is based on input documents and list discussion.

Introduction

Privacy considerations are important to Device APIs, since misuse of information exposed by the APIs can have financial, physical safety, and reputation impacts, among others. Privacy needs a systemic solution that includes functional requirements on user agents, web sites and other components of the system, since any opportunity for misuse of private information is a risk. Addressing privacy may include functional requirements in technical standards, laws and regulations, and best practices.

While privacy is an important consideration for all APIs, privacy risks may vary according to the information exposed by an individual API. For example, inappropriate disclosure of contacts or location information could create serious personal safety issues in a broad range of cases, while disclosure of certain system information might create privacy risks in fewer contexts.

Privacy protections are frequently understood as a set of principles or elements (one such set is described in [[PRIVACY-ISSUES-GEO]]). The core elements of privacy that are relevant to Device APIs, user agents that support the APIs, and applications that use the APIs are as follows:

These elements will each need to be approached in different ways. Approaches include specific requirements on individual APIs, conveying user expectations together with the data itself, and/or documenting best practices for application and content developers. Certain approaches are better suited to safeguarding certain privacy elements than others.

This document provides specific requirements for individual APIs, addressing the elements that are most relevant to API definitions: notice, consent, minimization, control, and access. Requirements involving user expectations, which primarily address retention, secondary use, and sharing, will be documented separately. Best practices for developers will also be documented separately, covering notice, minimization, control, access, retention, secondary use, and sharing in the application developer context.

The following table summarizes the breakdown of how each element is covered:

Privacy Element Requirements for API Definitions Requirements for user expectations conveyed with data Best practices for developers
Notice X X
Consent X
Minimization X X
Control X X
Access X X
Retention X X
Secondary Use X X
Sharing X X

The privacy requirements for individual APIs are provided in the next section. The requirements described in this document are intended to be applicable to device APIs both in the context of widgets and web applications.

The breakdown described above foreshadows the idea of providing API hooks that allow users to attach their expectations/preferences/policies about privacy to the data they share through the APIs. Attaching policy rules to the data that get shared can provide a legal basis for enhancing the control users have over their data once they are shared; but doing so create the following challenges:

It seems like the overall architectural approach that we discussed in Prague (with user expectation/preference bundle URIs passed via API hooks) needs to be described somewhere. Is this doc the right place?

Privacy Requirements for APIs

For most of the privacy elements that apply to APIs (except for minimization), the WG has not discussed what the specific requirements should be. Therefore most of the sections below simply list what requirements could address.

Notice

Requirements could address: Whether APIs should provide ways for UAs to notify users before their data is sent to applications; how that notification happens; what that notice should contain

Should the APIs have a hook for applications to convey the intended usage of the data? If they do, should it be a required parameter? And how can this information be conveyed without misleading the user about the trustworthiness of that information?

Is it possible to provide an indicator that user data is being used, and enable follow up action from the user to determine how it is being used? (e.g. visual indicator and means to access log)

Minimization

To reduce the risks of over-exposing users data, it is helpful to design APIs so that Web developers can request as little information as they need to accomplish their goals.

Requirements could address: API support for limiting the amount of information requested/returned, whether APIs require UAs to allow users to change or limit the amount or granularity of data sent to applications. Examples of potential requirements include:

Control

Requirements could address: Whether APIs require UAs to provide a mechanism for consent to be revoked; what revoking consent means; what the default settings are for whether and to whom user data is sent; what the default settings are for granularity of data collected; whether APIs require UAs to provide a mechanism for users to whitelist trusted applications or blacklist untrusted applications

Access

Requirements could include: Whether APIs require UAs to allow users to view the applications with whom they've shared data and at what granularity; whether APIs require UAs to allow users to view the history of the user's data sharing with each application; whether APIs require UAs to allow users to delete history entries or whole histories

Acknowledgements