OpenStreetMap is an open mapping database editable by anyone (similar to wikipedia). This could be a nice service to have added to keyoxide/doipjs in order to link someone's edits on OpenStreetMap to other methods of contacting them.
OpenStreetMap allows you to add a user bio (where a proof could be put), and has an XML-based API to fetch users programmatically (which could be used by doip). The API URL is https://www.openstreetmap.org/api/0.6/user/:user_id, which returns XML data such as the following (for my user id):
<osm version="0.6" generator="OpenStreetMap server" copyright="OpenStreetMap and contributors" attribution="http://www.openstreetmap.org/copyright" license="http://opendatacommons.org/licenses/odbl/1-0/">
<user id="18357498" display_name="Tyler Beckman" account_created="2023年01月25日T22:19:00Z">
<description>
https://keyoxide.org/a6299c20250223dcdeba5e2c933b9437a97a56b8
</description>
<contributor-terms agreed="true"/>
<img href="https://www.gravatar.com/avatar/ca2c21b7979e9a9cac03e1fccb84e8e9.jpg?s=100&d=https%3A%2F%2Fwww.openstreetmap.org%2Fassets%2Favatar_large-54d681ddaf47c4181b05dbfae378dc0201b393bbad3ff0e68143c3d5f3880ace.png"/>
<roles> </roles>
<changesets count="14"/>
<traces count="1"/>
<blocks>
<received count="0" active="0"/>
</blocks>
</user>
</osm>
In this data, the <description>https://keyoxide.org/a6299c20250223dcdeba5e2c933b9437a97a56b8</description> tag is my user bio which I can set on the OpenStreetMap website.
This works, however there is the issue of claims. OpenStreetMap user IDs are not publicly displayed on the website, however there are two ways that I know of to find it:
- Navigate to https://www.openstreetmap.org/api/0.6/user/details in a browser, and enter login details when the browser prompts for it. The user ID is displayed in the returned XML data is very similar to the other endpoint above. This isn't super user friendly and telling users enter login data again on another page is probably not a great idea
- Someone in the OSM IRC channel directed me to https://whosthat.osmz.ru/ which allows you to search for a user name (in this case my real name), and it will display the user ID. This would likely be much more user friendly
However, there then is the issue of how to format the claim, because traditionally it would be something such as proof@ariadne.id=https://www.openstreetmap.org/user/Tyler%20Beckman (which is the url you can use to display it in the browser), however the API endpoint that would be used to verify claims needs the ID, not the user name. One idea I have for this is to actually use a claim like I put above, and automatically fetch the user ID using https://whosthat.osmz.ru/. If I look in devtools, there is an API at https://whosthat.osmz.ru/whosthat.php?action=names&q=:username which returns a json list of potential matches such as: [{"id":"18357498","names":["Tyler Beckman"]}]. There can only ever be one user with a specific username, so exact matching could be used to find a user ID from a specific username. This does add some reliance on an api unrelated to openstreetmap.org, so if there is a better way to represent an OSM user ID in a claim it should probably be used.
[OpenStreetMap](https://openstreetmap.org/) is an open mapping database editable by anyone (similar to wikipedia). This could be a nice service to have added to keyoxide/doipjs in order to link someone's edits on OpenStreetMap to other methods of contacting them.
OpenStreetMap allows you to add a user bio (where a proof could be put), and has an XML-based API to fetch users programmatically (which could be used by doip). The API URL is `https://www.openstreetmap.org/api/0.6/user/:user_id`, which returns XML data such as the following (for my user id):
```xml
<osm version="0.6" generator="OpenStreetMap server" copyright="OpenStreetMap and contributors" attribution="http://www.openstreetmap.org/copyright" license="http://opendatacommons.org/licenses/odbl/1-0/">
<user id="18357498" display_name="Tyler Beckman" account_created="2023年01月25日T22:19:00Z">
<description>
https://keyoxide.org/a6299c20250223dcdeba5e2c933b9437a97a56b8
</description>
<contributor-terms agreed="true"/>
<img href="https://www.gravatar.com/avatar/ca2c21b7979e9a9cac03e1fccb84e8e9.jpg?s=100&d=https%3A%2F%2Fwww.openstreetmap.org%2Fassets%2Favatar_large-54d681ddaf47c4181b05dbfae378dc0201b393bbad3ff0e68143c3d5f3880ace.png"/>
<roles> </roles>
<changesets count="14"/>
<traces count="1"/>
<blocks>
<received count="0" active="0"/>
</blocks>
</user>
</osm>
```
In this data, the `<description>https://keyoxide.org/a6299c20250223dcdeba5e2c933b9437a97a56b8</description>` tag is my user bio which I can set on the OpenStreetMap website.
This works, however there is the issue of claims. OpenStreetMap user IDs are not publicly displayed on the website, however there are two ways that I know of to find it:
1. Navigate to https://www.openstreetmap.org/api/0.6/user/details in a browser, and enter login details when the browser prompts for it. The user ID is displayed in the returned XML data is very similar to the other endpoint above. This isn't super user friendly and telling users enter login data again on another page is probably not a great idea
2. Someone in the OSM IRC channel directed me to https://whosthat.osmz.ru/ which allows you to search for a user name (in this case my real name), and it will display the user ID. This would likely be much more user friendly
However, there then is the issue of how to format the claim, because traditionally it would be something such as `proof@ariadne.id=https://www.openstreetmap.org/user/Tyler%20Beckman` (which is the url you can use to display it in the browser), however the API endpoint that would be used to verify claims needs the ID, not the user name. One idea I have for this is to actually use a claim like I put above, and automatically fetch the user ID using https://whosthat.osmz.ru/. If I look in devtools, there is an API at `https://whosthat.osmz.ru/whosthat.php?action=names&q=:username` which returns a json list of potential matches such as: `[{"id":"18357498","names":["Tyler Beckman"]}]`. There can only ever be one user with a specific username, so exact matching could be used to find a user ID from a specific username. This does add some reliance on an api unrelated to openstreetmap.org, so if there is a better way to represent an OSM user ID in a claim it should probably be used.