openlibraryenvironment/gokb

View Create Package: Details for title

Closed this issue · 7 comments

So far I have a pop up dialog to enter all fields of a title. What is missing, is the actual mapping to the rest service for creating a title. Please list all fields that corresponds to page 39 of the functional specification.

POST /rest/titles/?type=<journal|serial|book|monograph|database>

[
    name: "TestFullJournal",
    ids|identifiers: [
        identifierID,
        [namespace: namespaceID, value: "3344-5544"],
        [namespace: namespaceName, value: "1234435-6"]
    ],
    publisher: publisherId|publisherName,
    publishedFrom: publishedFromDate,
    publishedTo: publishedToDate
]

other parameters (titleURL, accessFrom, accessTo, coverage and embargo) belong to the TIPP which links the TitleInstance with a specific package and specific platform.

Probably, this dialog should fire several requests to create TitleInstance and TIPP separately.

This process is sadly a bit more complicated then just POSTing a single new title entity. The ultimate goal here is creating a new TIPP, which would look like this:

{
  "title": <title-id>,
  "pkg": <package-id>,
  "hostPlatform": <platform-id>,
  "url": <URL string>, <-- Titel-URL
  "accessStartDate": <Date>, <-- Zugangszeitraum (Anfang)
  "accessEndDate": <Date>, <-- Zugangszeitraum (Ende)
  "coverageStatements": [  <-- Abdeckung (nicht benötigt für eBooks)
    {
      "coverageDepth": <Abstracts|Fulltext|Selected Articles>, <-- Art
      "startDate": <Date>,  <-- Abdeckungszeitraum (Anfang)
      "endDate": <Date>,  <-- Abdeckungszeitraum (Ende)
      "startVolume": "1",  <-- Bände (Anfang)
      "endVolume": "5",  <-- Bände (Ende)
      "startIssue": "1",  <-- Heft (Anfang)
      "endIssue": "20",  <-- Heft (Ende)
      "coverageNote": "Example Note", <-- Notizen
      "embargo": <embargo-code*> <-- Embargo
    }
  ]
}

Since a TIPP is used to link three existing components (title, pkg and hostPlatform), we need those IDs to create the TIPP itself. The title has to be looked up & selected via its Identifiers or somehow created before the tipp, which would require adding this information instead of the title-id in the form specified by Volker:

"title": <title-id>

becomes

"title": {
  "name": "New Title",
  "ids": [
     { "namespace": "issn", "value": "1122-2233" }
  ],
 "publishedFrom": <Date>
 "publishedTo": <Date>
}

It would obviously be easier to just allow the user to select an existing Title here, and display its selected values.

Also, either the package has to be persisted before this point (for it to have an ID), or the TIPP information has to be added to the Package-JSON (as an Array of tipps) to POST at the end of the process.

The platform-id would be the id of the previously selected nominalPlatform for the Package.

* The embargo code can be build by the following rule
<Type><Duration><Unit>
where Type can be P (beginning) or R (ending) and Unit may be one of D (day), M (month) and Y (year).

What is the functional name for such an entity title instance or title copy? TIPP is almost the worst idea because it is technical from the ground up and so not a good choice.

The concept of this topic seems a little bit abstruse. It should be more like create a package and afterwards assign all titles to this package. Also should it be possible to import titles without packages, as it was suggested by the authors of the concept.

Probably, there is no simple way of representing a complex structure such as the relation between, packages, providers, platforms and titles.

What's our conclusion on this (quite essential) topic?

In deviation from the concept, we agreed to create provider and platform before creating packages and titles. When creating a package, the provider and platform have to be picked from the list because they cannot be created within that same workflow.

Title knows publishedFrom and publishedTo, the concept describes a publishedAt but shows a publishing intervall? What is correct?

The concept does not contain a publisher, the title object does. What publisher should be used, the one of the package? Does this make sense?