GDPR/Affected Services

From OpenStreetMap Wiki
Jump to: navigation, search

This page tries to spec out the consequences for individual API calls that derive from the LWG white paper on https://wiki.openstreetmap.org/w/images/8/88/GDPR_Position_Paper.pdf .

"Drop (XML) attributes" means that user name, user id, changeset id, and possibly timestamp have to be dropped. The jury is still out on the timestamp; LWG have initially recommended dropping or diluting it, but further discussion has shown that this would make little sense and cause more problems than it is worth.

API calls and website functions

call controller/method change suggested for non-logged-in users
GET /api/capabilities api#capabilities no metadata
GET /api/0.6/capabilities api#capabilities no metadata
GET /api/0.6/permissions api#permissions no metadata
PUT /api/0.6/changeset/create changeset#create no metadata, already requires login
POST /api/0.6/changeset/:id/upload changeset#upload no metadata, already requires login
GET /api/0.6/changeset/:id/download changeset#download drop XML attributes
POST /api/0.6/changeset/:id/expand_bbox changeset#expand_bbox no metadata, already requires login
GET /api/0.6/changeset/:id changeset#read disallow call
POST /api/0.6/changeset/:id/subscribe changeset#subscribe no metadata, already requires login
POST /api/0.6/changeset/:id/unsubscribe changeset#unsubscribe no metadata, already requires login
PUT /api/0.6/changeset/:id changeset#update no metadata, already requires login
PUT /api/0.6/changeset/:id/close changeset#close no metadata, already requires login
GET /api/0.6/changesets changeset#query disallow call
POST /api/0.6/changeset/:id/comment changeset#comment no metadata, already requires login
POST /api/0.6/changeset/comment/:id/hide changeset#hide_comment no metadata, already requires login
POST /api/0.6/changeset/comment/:id/unhide changeset#unhide_comment no metadata, already requires login
PUT /api/0.6/node/create node#create no metadata, already requires login
GET /api/0.6/node/:id/ways way#ways_for_node drop XML attributes
GET /api/0.6/node/:id/relations relation#relations_for_node drop XML attributes
GET /api/0.6/node/:id/history old_node#history drop XML attributes
POST /api/0.6/node/:id/:version/redact old_node#redact no metadata, already requires login
GET /api/0.6/node/:id/:version old_node#version drop XML attributes
GET /api/0.6/node/:id node#read drop XML attributes
PUT /api/0.6/node/:id node#update no metadata, already requires login
DELETE /api/0.6/node/:id node#delete no metadata, already requires login
GET /api/0.6/nodes node#nodes drop XML attributes
PUT /api/0.6/way/create way#create no metadata, already requires login
GET /api/0.6/way/:id/history old_way#history drop XML attributes
GET /api/0.6/way/:id/full way#full drop XML attributes
GET /api/0.6/way/:id/relations relation#relations_for_way drop XML attributes
POST /api/0.6/way/:id/:version/redact old_way#redact no metadata, already requires login
GET /api/0.6/way/:id/:version old_way#version drop XML attributes
GET /api/0.6/way/:id way#read drop XML attributes
PUT /api/0.6/way/:id way#update no metadata, already requires login
DELETE /api/0.6/way/:id way#delete no metadata, already requires login
GET /api/0.6/ways way#ways drop XML attributes
PUT /api/0.6/relation/create relation#create no metadata, already requires login
GET /api/0.6/relation/:id/relations relation#relations_for_relation drop XML attributes
GET /api/0.6/relation/:id/history old_relation#history drop XML attributes
GET /api/0.6/relation/:id/full relation#full drop XML attributes
POST /api/0.6/relation/:id/:version/redact old_relation#redact no metadata, already requires login
GET /api/0.6/relation/:id/:version old_relation#version drop XML attributes
GET /api/0.6/relation/:id relation#read drop XML attributes
PUT /api/0.6/relation/:id relation#update no metadata, already requires login
DELETE /api/0.6/relation/:id relation#delete no metadata, already requires login
GET /api/0.6/relations relation#relations drop XML attributes
GET /api/0.6/map api#map drop XML attributes
GET /api/0.6/trackpoints api#trackpoints no metadata
GET /api/0.6/changes api#changes no metadata (only returns tile numbers)
GET /api/0.6/search search#search_all drop XML attributes
GET /api/0.6/ways/search search#search_ways drop XML attributes
GET /api/0.6/relations/search search#search_relations drop XML attributes
GET /api/0.6/nodes/search search#search_nodes this is disabled in the API
GET /api/0.6/user/:id user#api_read disallow call
GET /api/0.6/user/details user#api_details already requires login
GET /api/0.6/user/gpx_files user#api_gpx_files disallow call
GET /api/0.6/user/preferences user_preferences#read already requires login
GET /api/0.6/user/preferences/:preference_key user_preferences#read_one already requires login
PUT /api/0.6/user/preferences user_preferences#update already requires login
PUT /api/0.6/user/preferences/:preference_key user_preferences#update_one already requires login
DELETE /api/0.6/user/preferences/:preference_key user_preferences#delete_one already requires login
POST /api/0.6/gpx/create trace#api_create already requires login
GET /api/0.6/gpx/:id trace#api_read already requires login
PUT /api/0.6/gpx/:id trace#api_update already requires login
DELETE /api/0.6/gpx/:id trace#api_delete already requires login
GET /api/0.6/gpx/:id/details trace#api_read already requires login
GET /api/0.6/gpx/:id/data trace#api_data already requires login
POST /api/0.6/amf/read amf#amf_read unclear (Note: Needs review. Example: getway_history exposes user names along way's full history, even for unauthenticated users. Some of the other methods expose uid.)
POST /api/0.6/amf/write amf#amf_write unclear
GET /api/0.6/swf/trackpoints swf#trackpoints unclear
GET /api/0.6/notes/search notes#search disallow call
GET /api/0.6/notes/feed notes#feed disallow call
POST /api/0.6/notes/:id/comment notes#comment already requires login
POST /api/0.6/notes/:id/close notes#close already requires login
POST /api/0.6/notes/:id/reopen notes#reopen already requires login
GET /api/0.6/notes notes#index disallow call
POST /api/0.6/notes notes#create allowed with and without login - does this make sense when you cannot see existing notes?
GET /api/0.6/notes/:id notes#show disallow call
DELETE /api/0.6/notes/:id notes#destroy already requires login
GET /way/:id browse#way drop attributes
GET /way/:id/history browse#way_history drop attributes
GET /node/:id browse#node drop attributes
GET /node/:id/history browse#node_history drop attributes
GET /relation/:id browse#relation drop attributes
GET /relation/:id/history browse#relation_history drop attributes
GET /changeset/:id browse#changeset disallow call
GET /changeset/:id/comments/feed changeset#comments_feed disallow call
GET /note/:id browse#note disallow call
GET /note/new browse#new_note allowed with and without login
GET /user/:display_name/history changeset#list disallow call
GET /user/:display_name/history/feed changeset#feed disallow call
GET /user/:display_name/notes notes#mine disallow call
GET /history/friends changeset#list already requires login
GET /history/nearby changeset#list already requires login
GET /history changeset#list disallow call
GET /history/feed changeset#feed disallow call
GET /history/comments/feed changeset#comments_feed disallow call
GET /user/:display_name/traces/tag/:tag/page/:page trace#list disallow call
GET /user/:display_name/traces/tag/:tag trace#list disallow call
GET /user/:display_name/traces/page/:page trace#list disallow call
GET /user/:display_name/traces trace#list disallow call
GET /user/:display_name/traces/tag/:tag/rss trace#georss disallow call
GET /user/:display_name/traces/rss trace#georss disallow call
GET /user/:display_name/traces/:id trace#view disallow call
GET /user/:display_name/traces/:id/picture trace#picture disallow call
GET /user/:display_name/traces/:id/icon trace#icon disallow call
GET /traces/tag/:tag/page/:page trace#list disallow call
GET /traces/tag/:tag trace#list disallow call
GET /traces/page/:page trace#list disallow call
GET /traces trace#list disallow call
GET /traces/tag/:tag/rss trace#georss disallow call
GET /traces/rss trace#georss disallow call
GET /traces/mine/tag/:tag/page/:page trace#mine already requires login
GET /traces/mine/tag/:tag trace#mine already requires login
GET /traces/mine/page/:page trace#mine already requires login
GET /traces/mine trace#mine already requires login
POST /trace/create trace#create already requires login
GET /trace/:id/data trace#data disallow call
POST /trace/:id/edit trace#edit already requires login
POST /trace/:id/delete trace#delete already requires login
POST /diary/new diary_entry#new already requires login
GET /diary/friends diary_entry#list allow
GET /diary/nearby diary_entry#list allow
GET /user/:display_name/diary/rss diary_entry#rss allow
GET /diary/:language/rss diary_entry#rss allow
GET /diary/rss diary_entry#rss allow
GET /user/:display_name/diary/comments/:page diary_entry#comments allow
GET /user/:display_name/diary/comments diary_entry#comments
GET /user/:display_name/diary diary_entry#list allow
GET /diary/:language diary_entry#list allow
GET /diary diary_entry#list allow
GET /user/:display_name/diary/:id diary_entry#view allow
POST /user/:display_name/diary/:id/newcomment diary_entry#comment already requires login
POST /user/:display_name/diary/:id/edit diary_entry#edit already requires login
POST /user/:display_name/diary/:id/hide diary_entry#hide already requires login
POST /user/:display_name/diary/:id/subscribe diary_entry#subscribe already requires login
POST /user/:display_name/diary/:id/unsubscribe diary_entry#unsubscribe already requires login
GET /user/:display_name user#view LWG document seems unclear
POST /user/:display_name/make_friend user#make_friend already requires login
POST /user/:display_name/remove_friend user#remove_friend already requires login
POST /user/:display_name/account user#account already requires login
GET /user/:display_name/set_status user#set_status already requires login
GET /user/:display_name/delete user#delete already requires login
POST /users user#list already requires login
POST /users/:status user#list already requires login
GET /search geocoder#search
GET /geocoder/search_latlon geocoder#search_latlon
GET /geocoder/search_ca_postcode geocoder#search_ca_postcode
GET /geocoder/search_osm_nominatim geocoder#search_osm_nominatim
GET /geocoder/search_geonames geocoder#search_geonames
GET /geocoder/search_osm_nominatim_reverse geocoder#search_osm_nominatim_reverse
GET /geocoder/search_geonames_reverse geocoder#search_geonames_reverse
GET /directions directions#search
POST /export/finish export#finish
GET /export/embed export#embed
GET /user/:display_name/inbox message#inbox already requires login
GET /user/:display_name/outbox message#outbox already requires login
POST /message/new/:display_name message#new already requires login
GET /message/read/:message_id message#read already requires login
POST /message/mark/:message_id message#mark already requires login
POST /message/reply/:message_id message#reply already requires login
POST /message/delete/:message_id message#delete already requires login
GET /user/:display_name/oauth_clients oauth_clients#index
POST /user/:display_name/oauth_clients oauth_clients#create
GET /user/:display_name/oauth_clients/new oauth_clients#new
GET /user/:display_name/oauth_clients/:id/edit oauth_clients#edit
GET /user/:display_name/oauth_clients/:id oauth_clients#show
PATCH /user/:display_name/oauth_clients/:id oauth_clients#update
PUT /user/:display_name/oauth_clients/:id oauth_clients#update
DELETE /user/:display_name/oauth_clients/:id oauth_clients#destroy
POST /oauth/revoke oauth#revoke
POST /oauth/authorize oauth#authorize
GET /oauth/token oauth#token
POST /oauth/request_token oauth#request_token
POST /oauth/access_token oauth#access_token
GET /oauth/test_request oauth#test_request
POST /user/:display_name/role/:role/grant user_roles#grant already requires login
POST /user/:display_name/role/:role/revoke user_roles#revoke already requires login
GET /user/:display_name/blocks user_blocks#blocks_on disallow call
GET /user/:display_name/blocks_by user_blocks#blocks_by disallow call
GET /blocks/new/:display_name user_blocks#new already requires login
GET /user_blocks user_blocks#index disallow call
POST /user_blocks user_blocks#create already requires login
GET /user_blocks/new user_blocks#new already requires login
GET /user_blocks/:id/edit user_blocks#edit already requires login
GET /user_blocks/:id user_blocks#show disallow call
PATCH /user_blocks/:id user_blocks#update already requires login
PUT /user_blocks/:id user_blocks#update already requires login
DELETE /user_blocks/:id user_blocks#destroy already requires login
POST /blocks/:id/revoke user_blocks#revoke already requires login
GET /redactions redactions#index public
POST /redactions redactions#create already requires login
GET /redactions/new redactions#new already requires login
GET /redactions/:id/edit redactions#edit already requires login
GET /redactions/:id redactions#show public
PATCH /redactions/:id redactions#update already requires login
PUT /redactions/:id redactions#update already requires login
DELETE /redactions/:id redactions#destroy already requires login

CGImap

Some API calls are also executed through CGImap and need to be restricted there as well.

Github issue: https://github.com/zerebubuth/openstreetmap-cgimap/issues/144

GET /api/0.6/map
GET /api/0.6/node/:id
GET /api/0.6/way/:id
GET /api/0.6/relation/:id
GET /api/0.6/changeset/:id
GET /api/0.6/node/:id/history
GET /api/0.6/way/:id/history
GET /api/0.6/relation/:id/history
GET /api/0.6/way/:id/full
GET /api/0.6/relation/:id/full
GET /api/0.6/nodes
GET /api/0.6/ways
GET /api/0.6/relations
GET /api/0.6/changeset/:id/download

(Source: chef rewrite rules)

Additional calls to be checked (already implemented on CGImap)

GET /api/0.6/node/:id/:version 
GET /api/0.6/way/:id/:version 
GET /api/0.6/relation/:id/:version 

CGImap only supports OAuth. Basic Authentication is not supported in the productive version 0.6.1. However, there's forthcoming Basic Auth support as part of https://github.com/zerebubuth/openstreetmap-cgimap/pull/152

OpenGraph

Investigate impact of GDPR on OpenGraph: https://github.com/openstreetmap/openstreetmap-website/issues/2007

planet.osm.org

Moved to GDPR/Planet.osm Migration

Deleted Users (done)

Moved to GDPR/Support for Downstream Controllers

Editors / Libraries

Moved to GDPR/Clients_and_Libraries