Abstract
Address the assignment of atom ids when clients are creating new entries. Allow clients to request a batch of new ids for the clients use.
Status
Open
Rationale
Clients should send valid Atom content when creating new entries which requires the inclusion of an atom id element. APP clients should be able to either generate their own ids or use one generated by the server. It is suggested that generated ids are requested in batches to reduce overheads.
Proposal
Renumber section 5.5 Success and Failure to 5.6
Add a new section:
5.5 Requesting Atom id Values for Client Use To request a set of id values for use in creating new entries the client sends a POST to the server's id generation service. The IRI for this service is found from information in the introspection document. An id list document is returned with 10 id values for use by the client. Client Server | | | 1.) POST to ID Generator IRI | |------------------------------------------->| | | | 2.) 200 OK, List of id values | |<-------------------------------------------| | |
Remove the following text from from 8.1 Creating resources with POST:
Clients MAY POST invalid Atom for initial resource creation - specifically the id and link elements MAY be omitted
Change section 7.3.2 The 'app:workspace' Element
Replace
appWorkspace = element app:workspace { appCommonAttributes, attribute title { text }, ( appCollection+ & extensionElement* ) }
with
appWorkspace = element app:workspace { appCommonAttributes, attribute title { text }, attribute idgenerator { text }, ( appCollection+ & extensionElement* ) }
Add a new section:
7.2.2.2 The 'idgenerator' Attribute The app:workspace element MUST contain an 'idgenerator' attribute, whose value conveys the IRI of the workspace's ID generation service.
Add the following new sections:
8.1.2 Server Generation of id Values To assist clients in assigning ids for new entries servers MUST be able to generate ids on behalf of the client. The server MUST provide an id generation service for each workspace. The IRI of this service is specified in the introspection document. To obtain a list of ids for use in creating new entries the client performs a POST on the appropriate id generation service. The server responds with an id list document containing 10 ids. The server MUST NOT issue any id value more than once to either the same or different clients. The server MUST NOT issue any id value already assigned to an entry held by the server. The client MUST NOT anticipate any pattern or sequence in the generated list of ids. If a client requests a list of id values from a server the client SHOULD use all the returned id values before issuing any subsequent request for additional id values. 8.1.3 id List Documents id List Documents are identified with the "application/atomidlist+xml" media type (See Section 14) 8.1.3.1 <idlist xmlns="http://purl.org/atom/app#"> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefa6</id> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefa7</id> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefa8</id> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefa9</id> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefaa</id> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefab</id> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefac</id> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefad</id> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefae</id> <id>urn:uuid:ce61592c-14e2-4557-978e-dfbd444aefaf</id> </idlist> 8.1.3.2 The 'app:idlist' Element The root of an id List Document is the "app:idlist" element. namespace app = "http://purl.org/atom/app#" start = appIdList The "app:idlist" is a container for a list of id values generated by the server appIdList = element app:idlist { appCommonAttributes, ( appId+ ) } 8.1.3.3 The 'app:id' Element The "app:idlist" element MUST contain ten "app:id" elements. The element content of an "app:id" is a valid value for a new Atom entry. appId = element app:id { appCommonAttributes, ( atomId ) } atomId = xsd:string
Impacts
draft06