It’s possible. There are basically two approaches:
a) A Push, from your Web Application, through FindVera (or it’s UI4 equivalent)
Basically all “remote” enabled Vera’s (ones that can be accessed with FindVera) can have “calls” done against them. There are specific “calls” that can be made to do things like Set Lights on, or even change Lock codes. This is how the “remote control” interface (iVera, SQRemote, etc) work, it’s also how the remote HTML UI to Vera itself works.
Unfortunately these protocols aren’t really documented anywhere, but they are relatively simple to replicate.
If you have an in-house App Developer writing you the thing to “generate” PIN’s etc, then they should be able to work out most of the protocol using Firefox/Firebug and “looking” at the interaction that a Web Browser sets off when you initiate the “Set PIN Code” stuff in the Dialog for the lock.
This interaction is different between Findvera.com (UI2/UI3) and it’s UI4 counterpart.
b) A Pull, from a Plugin installed into Vera
This is somewhat like the above, but instead someone writes you a short plugin that you need to install into each and every Vera you want to control, and your App Developer will need to expose something, from your booking website, that each Vera can [securely] call back into in order to “get the next code” (or whatever).
It then just needs to execute the equivalent of the following (extremely rough, never tried) bit of code:
-- wake up and get the pin from some remote service
...
--
local args = {}
args["UserCodeName"]="RentMe"
args["newPin"]=[i]yourNewPIN[/i]
local resultcode,resultstring = luup.call_action("urn:micasaverde-com:serviceId:DoorLock1","SetPIN", args, [i]yourDeviceId[/i])
see [tt]S_DoorLock1.xml[/tt] for a complete list of PIN Code setting API’s.