[OSM-dev] API id placeholders

Frederik Ramm frederik at remote.org
Sun May 6 09:15:18 BST 2007


Lars,

> Couldn't the OSM API be made to accept negative ID numbers as 
> placeholders in this fashion, and to allow multiple objects (e.g. 
> these two nodes and one line segment) in one request?  Would that 
> terribly break some rule in the REST bible?
> 
> Sometimes when I need to change the direction of every line 
> segment in a long way, or want to change or remove an attribute 
> from a large number of objects
[...]

Both topics are not really related - your "update many objects at once" 
request could be met even without the "negative numbers as placeholders" 
  mechanism.

The problem with both is return values. If you send a request that is 
intended to update many objects at once, and one fails (e.g. because the 
object you intend to update has been deleted in the mean time), then how 
will you know which one failed? The API doesn't use or support 
transactions, so it cannot roll back the database to whatever state it 
was in before it started processing your multi-update. One would have to 
devise a more complex return value indicating a position within the 
request where the failure occurred.

With object creation failure situations are even more complex, but even 
if everything goes well you (or your editor) needs to know which IDs 
were actually assigned to each of the new objects, so the return value 
would have to be some sort of mapping table "node -1 -> 1234567".

All not impossible, but not easy either. And, while there's no reason to 
be fanatic about anything, the idea behind REST is usually to have calls 
that work with one object and not with a collection.

Bye
Frederik

-- 
Frederik Ramm  ##  eMail frederik at remote.org  ##  N49°00.09' E008°23.33'




More information about the dev mailing list