External API create series wants organizers field as creator

Steps to reproduce

Creating a new series via POST to /api/series fails with bad request if the series DC metadata includes the organizers field.

Adjusting the test case input json to add this field causes a test failure:

diff --git a/modules/matterhorn-external-api/src/test/resources/series/create-series-metadata.json b/modules/matterhorn-external-api/src/test/resources/series/create-series-metadata.json
index e5ad037..464c83c 100644
— a/modules/matterhorn-external-api/src/test/resources/series/create-series-metadata.json
+++ b/modules/matterhorn-external-api/src/test/resources/series/create-series-metadata.json
@@ -14,6 +14,10 @@
{
"id": "description",
"value": "A great description"
+ },
+ {
+ "id": "organizers",
+ "value": [ "A great person" ]
}
]
}

Activity

Show:
Stephen Marquard
July 31, 2017, 2:27 PM

Maybe related to this field being named creator in etc/org.opencastproject.ui.metadata.CatalogUIAdapterFactory-series-common.cfg

GET /api/series/SERIESID returns the field as "organizers".

  1. Organizers
    property.organizer.inputID=creator
    property.organizer.label=EVENTS.SERIES.DETAILS.METADATA.ORGANIZERS
    property.organizer.type=mixed_text
    property.organizer.readOnly=false
    property.organizer.required=false
    property.organizer.listprovider=CONTRIBUTORS
    property.organizer.order=6

Stephen Marquard
July 31, 2017, 2:54 PM

, do you have a view on this? Looks like a bug to me, in that the metadata ids for creation should match those you get back when you search or request metadata for a series.

What happens to bugs in the External API that require API changes to fix? Do they get ignored, fixed, fixed with a version increment?

Sven Stauber
December 11, 2017, 1:41 PM
Edited

The External API treats all metadata catalogs (dublincore/episode, dublincore/series, extended metadata catalogs) the same way, i.e. they are fully configurable.

It is true that the names of the metadata catalog fields are defined in the metadata catalog configuration, e.g. like property.organizer.inputID=creator in your example.

That was also the problem behind the Admin UI datetimepicker pull request breaking the External API compatibility as the Admin UI datetimepicker pull request changed the metadata catalog configuration of dublincore/episode that also affected the External API.

The configurability seems somewhat on the "too configurable" side, although we, for example, depend on being able to configure the series of events as "required" field as our system is not designed to work with events that don't belong to any series.

We will likely provide a patch in the beginning of the next year that tries to find a compromise between no configurability vs. too much configurability. Likely, defining, documenting and ensuring a minimal set of metadata fields is a reasonable solution that ensures some basis for interoperability but still leaves enough room for adapting to specific environments.

Sven Stauber
December 11, 2017, 1:47 PM

BTW: Note that the correct fix would be to change the name of "organizers" to "creator" as /api/series/{id}/metadata is supposed to provide the client information about available fields and their properties. "creator" is supposed to be a technical identifier not displayed to the user, whereas the External API also supports the notion of displayable names.

Assignee

Sven Stauber

Reporter

Stephen Marquard

Severity

Incorrectly Functioning With Workaround

Tags (folksonomy)

None

Components

Fix versions

Affects versions

Priority

Major
Configure