The LCF specification does not specify which of the following is true when creating a new entity via a HTTP POST request:
a) The client should never provide an entity's identifier, as all entity identifiers should be generated by the server. Or:
b) The client should always provide an entity's identifier, and the server will then be forced to use this identifier. Or:
c) The client should provide an identifier when creating certain entities, but not provide an identifier when creating others.
I would assume point c above is true, but I am worried it will cause interoperability problems if not specified in detail, since LMS vendors may assume different entities should have their identifiers generated by the client.
I think entity identifiers should always be generated on the server side, except in the case of an Item entity or a Patron entity (since I am assuming the patron and item identifier will always be their barcodes as is the case in SIP). The reasons for allowing the client to specify the identifier is it would be useful if the LCF could be used in the following scenarios:
- An item which has already has been barcoded is being added to library via an LCF client , therefore it is important that the LCF client can specify the barcode on creation.
- A member of Library staff is using an LCF client to add a borrower. The staff member might take the next free library card out a drawer or cupboard and assign it to the borrower.
Therefore it is essential that LCF servers allow clients to specify the patron and item identifiers. However the scenario may also take place where a new patron is using an LCF client (imagine this is a page on the library website) to join the library. In this case the library might post the patrons library card to them through the mail, in which case the LCF server would need to generate the patron barcode itself. Therefore maybe LCF servers should be able to generate a patron barcode if not specified by the client.
I am asking this question in the hope it will provoke discussion. I think the simplest solution to allow all implementations to be interoperable would be for LCF servers to allow clients to specify identifiers for both Patron and Item entities, but not require them to do so, as well as agreeing that the LCF server will be responsible for generating identifiers on all other entities.