Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Publication Claim

Scenario 2: A new researcher joins the institution and logins for the first time in the repository. The publication claim services found most of their publications in the OpenAIRE network and prompts for import. The researcher reviews the list, confirms the authorship and imports the publication saving a significant amount of (often publicly payed) time. Moreover, the authorship confirmation will come back later to OpenAIRE offering useful information about the data quality and potential enrichment. The same applies for publications authored by researchers in different institutes, having the data in multiple repositories makes the data more reliable and raises the chance to get more information and content from any of the authors.

The goal of the Publication Claim service is to support the scenario above.

The service has been designed to be independent from a specific provider or implementation so that it can be easily extended and maintained over time. Moreover, multiple providers can be active at the same time improving the chance to save researchers time.

In the original plan an integration with the ReCiter open source platform was originally planned but over the phase 2 we found that the internal data structure of ReCiter was too tight to the PubMed Article Model to be adapted to work with the data provided by the openAIRE Research Graph within the budget limit and for such reason we switched to a direct integration with the openAIRE Research Graph via the Publication REST API. Other good candidates to be integrated via such framework are ORCID or commercial databases via their authors' IDs.

Data source

The openAIRE Publication REST API are used to retrieve publication that could be authored by researcher at the Institution. The openAIRE Publication REST API are queried using the names known by the repository for its researchers, the retrieve list is later reduced passing identified publications to a pipeline of JAVA classes that can promote or reject his inclusion in the suggestion list. Publications previously discarded by the researcher are automatically filter out avoiding to re-present the same publication again and again.

The suggestion providers are defined in the dspace/config/spring/api/suggestions.xml spring configuration file. Indeed, the system can be extended to more provider than the one implemented to query the OpenAIRE Researcher Graph

    <util:map id="suggestionProviders" map-class="java.util.HashMap" 
              key-type="java.lang.String" value-type="org.dspace.app.suggestion.SuggestionProvider">
        <entry key="oaire" value-ref="OAIREPublicationLoader" />
    </util:map>

    <bean id="OAIREPublicationLoader" class="org.dspace.app.suggestion.oaire.OAIREPublicationLoader">
        <property name="sourceName" value="oaire" />
        <property name="primaryProvider" ref="openaireLiveImportDataProviderByAuthor" />
        <property name="otherProviders">
            <list>
                <ref bean="openaireLiveImportDataProviderByTitle"/>
            </list>
        </property>
        <property name="names">
            <list>
                <value>dc.title</value>
                <value>crisrp.name</value>
                <value>crisrp.name.translated</value>
                <value>crisrp.name.variant</value>
            </list>
        </property>
        <property name="pipeline">
            <list>
                <bean
                    class="org.dspace.app.suggestion.oaire.AuthorNamesScorer">
                    <property name="contributorMetadata">
                        <list>
                            <value>dc.contributor.author</value>
                        </list>
                    </property>
                    <property name="names">
                        <list>
                            <value>dc.title</value>
                            <value>crisrp.name</value>
                            <value>crisrp.name.translated</value>
                            <value>crisrp.name.variant</value>
                        </list>
                    </property>
                </bean>
                <bean
                    class="org.dspace.app.suggestion.oaire.DateScorer">
                    <property name="birthDateMetadata" value="person.birthDate" />
                    <property name="educationDateMetadata" value="crisrp.education.end" />
                    <property name="publicationDateMetadata" value="dc.date.issued" />
                </bean>    
            </list>
        </property>
    </bean>

Each suggestionProvider is identified by an unique name used as key in the suggestionProviders map.

The OpenAIRE implementation is represented by the java class org.dspace.app.suggestion.oaire.OAIREPublicationLoader and configured via the following properties:

  • the primaryProvider property defines which DSpace ExternalDataProvider use to retrieve the record
  • the otherProviders property defines which DSpace ExternalDataProviders other than the primary could offer the same records. This is used to automatically remove from the suggestion list records that are imported manually by the researcher from these other providers
  • the names property defines the metadata to use to build the search query over the openAIRE Research Graph to retrieve the list of publications to evaluate as suggestions. It is responsibility of the scorers defined in the pipeline to compute a score for each retrieved publication and eventually discard the ones that are not good enough.
  • the pipelines property allows a future refinement of the procedure introducing for instance support for researcher preference that could exclude specific sources (pubmed, crossref, datacite, etc.) or keywords/subjects unrelated with his research interests. Right now two scorers are in place:
    • AuthorNamesScorer to validate the finding against the researcher name as it has been found that searching the openAIRE Publication API for author such as Bollini Susanna would find also publications co-authored by Andrea Bollini and Susanna Mornati;
    • DateScorer to validate the finding against a guessed range of years that the system expect to be the productivity or interested windows for the researcher. This range is calculated using the graduation date if available or the birthday but can be also set manually by the researcher in his profile

The dspace script class org.dspace.app.suggestion.OAIREPublicationLoaderRunnableCli is used to run the queries and store the identified publication in the dedicated SOLR core suggestion for further processing.

The dspace script can be run both from the CLI than from the UI.

To run the loader from the dspace installation bin folder

./dspace import-oaire-suggestions [-s uuid-of-single-researcher]

without the s parameter the script will process all the researcher available in the system.

The script can be also run from the Script UI so that it is also available to repository manager that cannot be access the CLI

publication claim suggestions retrieval script UIImage Modified

Two external source providers, openAIRE Publications By Title and By Author have been defined according to the standard DSpace 7 External Sources framework. It is activated in the config/spring/api/external-services.xml as follow

     <bean id="openaireLiveImportDataProviderByAuthor" class="org.dspace.external.provider.impl.LiveImportDataProvider">
        <property name="metadataSource" ref="openaireImportServiceByAuthor"/>
        <property name="sourceIdentifier" value="openaire"/>
        <property name="recordIdMetadata" value="dc.identifier.other"/>
        <property name="supportedEntityTypes">
            <list>
                <value>Publication</value>
            </list>
        </property>
    </bean>

    <bean id="openaireLiveImportDataProviderByTitle" class="org.dspace.external.provider.impl.LiveImportDataProvider">
        <property name="metadataSource" ref="openaireImportServiceByTitle"/>
        <property name="sourceIdentifier" value="openaireTitle"/>
        <property name="recordIdMetadata" value="dc.identifier.other"/>
        <property name="supportedEntityTypes">
            <list>
                <value>Publication</value>
            </list>
        </property>
    </bean>

with the importer services defined via the Live Import Framework in /dspace-api/src/main/resources/spring/spring-dspace-addon-import-services.xml as follow

    <bean id="openaireImportServiceByAuthor"
          class="org.dspace.importer.external.openaire.service.OpenAireImportMetadataSourceServiceImpl" scope="singleton">
        <property name="metadataFieldMapping" ref="openaireMetadataFieldMapping"/>
        <property name="queryParam" value="author"/>
    </bean>
    <bean id="openaireImportServiceByTitle"
          class="org.dspace.importer.external.openaire.service.OpenAireImportMetadataSourceServiceImpl" scope="singleton">
        <property name="metadataFieldMapping" ref="openaireMetadataFieldMapping"/>
        <property name="queryParam" value="title"/>
    </bean>
    <bean id="openaireMetadataFieldMapping"
          class="org.dspace.importer.external.openaire.service.metadatamapping.OpenAireFieldMapping">
    </bean>

The mapping between the openAIRE Publications metadata and the dspace metadata is provided in the config/spring/api/openaire-integration.xml using the usual xpath approach of the DSpace Live Import Framework.

Having used the Live Import Framework internally to the loader to perform the query has had the side benefit to make available the publication data of the openAIRE Research Graph also to the direct import functionality of DSpace, so that the researcher can now query the openAIRE graph and import publication on demand.

The SOLR suggestion core has the following structure

<fields>
    <field name="source" type="string" indexed="true" stored="true" omitNorms="true" />
    <field name="suggestion_fullid" type="string" indexed="true" stored="true" omitNorms="true" />
    <field name="suggestion_id" type="string" indexed="true" stored="true" omitNorms="true" />
    <field name="target_id" type="string" indexed="true" stored="true" omitNorms="true" />
    <field name="title" type="string" indexed="true" stored="true" omitNorms="true" />
    <field name="date" type="string" indexed="true" stored="true" omitNorms="true" />
    <field name="display" type="string" indexed="true" stored="true" omitNorms="true" />
    <field name="contributors" type="string" indexed="true" stored="true" omitNorms="true" multiValued="true" />
    <field name="abstract" type="string" indexed="true" stored="true" omitNorms="true" />
    <field name="category" type="string" indexed="true" stored="true" omitNorms="true" multiValued="true"/>
    <field name="external-uri" type="string" indexed="true" stored="true" omitNorms="true" />
    <field name="processed" type="boolean" indexed="true" stored="true" omitNorms="true" />
    <field name="trust" type="double" indexed="true" stored="true" omitNorms="true" />
    <field name="evidences" type="string" indexed="false" stored="true" omitNorms="true" />
</fields>    
<uniqueKey>suggestion_id</uniqueKey>

the source field would allow the reuse of such structure by other sources than openAIRE.

Three endpoints have been designed to expose the result of the processing to the DSpace UI and so to the Repository Managers and single researchers:

  • /api/integration/suggestionsources to provide access to summary information about the available suggestion from each source (openaire, orcid, etc.)
  • /api/integration/suggestiontargets to provide access to summary information about the available suggestions for a specific researcher
  • /api/integration/suggestions to provide access to the detailed suggestions so that they can be reviewed and managed by the repository manager or the researcher to whom they related

The detailed REST contract for such endpoints are available on the 4Science Rest7Contract repository and embedded at the bottom of the page for easy reference.

Repository Manager UI

The resulting UI is accessible for the Repository Manager from the administrative menu. As entry point for the features a “Notifications” menu entry has been added to the DSpace administrative menu, from where the repository manager will be able to manage the suggestions got from the different sources.

menuImage Modified

A list of local profiles with candidate publications will be shown so that the repository manager can review them directly or support the researcher: source-dashboardImage Modified

For each candidate the available suggestions are shown, sorted by the evaluated total score (summing up all the processed evidences ). Using the buttom see evidence is possible to get detailed information about the score
suggestion-evidencesImage Modified

The suggested authorship of each article can be confirmed importing the data locally, or rejected. This operation can be performed individually but also simultaneously for all the selected suggestions, speeding up the process. The decision can also be guided by inspecting the matching evidences which are displayed for each suggestion by clicking on 'See evidence'

source-suggesionsImage Modified

The suggestions list can be sorted by total score descending or ascending (highlighting the weakest candidates).

source-suggesionsImage Modified

Researcher UI

This functionality requires to implement a mechanism to uniquely link user accounts with Person profiles. Such mechanism is implemented out-of-box in DSpace-CRIS. Where the link is not implemented, the Repository Manager UI can still be used.

The single researcher is also allowed to directly review his suggestions. Upon login he is informed about the availability of suggestions from one or more providers

alert-loginImage Modified

and can proceed to review the suggestions list in the same way than the Repository Manager, the notification message is also always available at the top of the mydspace

alert-mydspaceImage Modified

Processing the decisions

The backend is responsible to process the repository manager or researcher decisions taken over the received suggestions. The publication to be imported are processed according to the Import from External Sources normal data flow of DSpace 7. Upon import the suggestion document is removed from the SOLR core, in case of rejection the document is updated flagging it as rejected so that it will be not longer proposed to the user.

Rest Contract

Three endpoints have been designed to interact with the publication claim service

  • /api/integration/suggestionsources to provide access to summary information about the available suggestion from each source (openaire, orcid, etc.)
  • /api/integration/suggestiontargets to provide access to summary information about the available suggestions for a specific researcher
  • /api/integration/suggestions to provide access to the detailed suggestions so that they can be reviewed and managed by the repository manager or the researcher to whom they related

/api/integration/suggestionsources

Suggestion Sources Endpoints

Back to the list of all defined endpoints

Main Endpoint

/api/integration/suggestionsources

It returns a paginated list of suggestion sources. All the sources are returned regardless to the existence or less of suggestions. This endpoint is reserved to administrators

single entry

GET api/integration/suggestionsources/<:source-key>

It returns the data from a specific source. This endpoint is reserved to administrators

sample for a source /api/integration/suggestionsources/reciter

{
    "id": "reciter",
    "total": 2,
    "type": "suggestionsource",
    "_links": {
      "suggestiontargets": {
        "href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/search/findBySource?source=reciter"
      },
      "self": {
        "href": "https://dspace7.4science.cloud/server/api/integration/suggestionsources/reciter"
      }
    }
}

Attributes

  • the id attribute is the key that identify the source
  • the total attribute is the number of target with suggestions. It can be 0 if there are no target with suggestions

Exposed links:

  • suggestiontargets: link to the suggestion targets entries

Status codes:

  • 200 Ok - if the operation succeed
  • 401 Unauthorized - if you are not authenticated
  • 403 Forbidden - if you are not logged in with sufficient permissions
  • 404 Not found - if the source doesn't exist or is not active in the system (when 403 doesn't apply)

/api/integration/suggestiontargets

Suggestion Targets Endpoints

Back to the list of all defined endpoints

Main Endpoint

/api/integration/suggestiontargets

Unsupported. The suggestion targets can be retrieved only by source or by target, see the search methods below.

single entry

GET api/integration/suggestiontargets/source:target-id

It returns the data from one target. This endpoint is accessible to the owner of the target profile and to the administrators

sample for a suggestion /api/integration/suggestiontargets/scopus:nhy567-9d6d-ty67-b905-fef0f8cae26

{
    "id": "scopus:nhy567-9d6d-ty67-b905-fef0f8cae26",
    "display": "Digilio, Giuseppe",
    "source": "scopus",
    "total": 3,
    "type": "suggestiontarget",
    "_links": {
      "target": {
        "href": "https://dspace7.4science.cloud/server/api/core/items/nhy567-9d6d-ty67-b905-fef0f8cae26"
      },
      "suggestions": {
        "href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=nhy567-9d6d-ty67-b905-fef0f8cae26"
      },
      "self": {
        "href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/scopus:nhy567-9d6d-ty67-b905-fef0f8cae26"
      }
    }
}

Attributes

  • the display attribute is the preferred name of the linked Person
  • the source attribute is the key that identifies the source of the suggestion
  • the total attribbute is the number of related suggestions. Must be greater than 0

Exposed links:

  • target: link to the items that represent the person to whom the suggestions are proposed
  • suggestions: link to the suggestions entries

Status codes:

  • 200 Ok - if the operation succeed
  • 401 Unauthorized - if you are not authenticated
  • 403 Forbidden - if you are not logged in with sufficient permissions
  • 404 Not found - if there are no suggestions for the requested profile (when 403 doesn't apply)

Search methods

findBySource

/api/integration/suggestiontargets/search/findBySource?source=<:source>

The supported parameters are:

  • page, size see pagination
  • source: mandatory, the key that identify the source to query

It returns the list of targets with their suggestion count for the specified source. Only targets that have at least one suggestion are returned. This endpoint is reserved to administrators

Example:

{
  "_embedded": {
    "suggestiontargets": [
      {
        "id": "reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26",
        "display": "Bollini, Andrea",
        "source": "reciter",
        "total": 31,
        "type": "suggestiontarget",
        "_links": {
          "target": {
            "href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
          },
          "suggestions": {
            "href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26c&source=reciter"
          },
          "self": {
            "href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26"
          }
        }
      },
      {
        "id": "reciter:nhy567-9d6d-ty67-b905-fef0f8cae26",
        "display": "Digilio, Giuseppe",
        "source": "reciter",
        "total": 12,
        "type": "suggestiontarget",
        "_links": {
          "target": {
            "href": "https://dspace7.4science.cloud/server/api/core/items/nhy567-9d6d-ty67-b905-fef0f8cae26"
          },
          "suggestions": {
            "href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=nhy567-9d6d-ty67-b905-fef0f8cae26&source=reciter"
          },
          "self": {
            "href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/reciter:nhy567-9d6d-ty67-b905-fef0f8cae26"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/search/findBySource?source=reciter"
    }
  },
  "page": {
    "size": 20,
    "totalElements": 2,
    "totalPages": 1,
    "number": 0
  }
}

Status codes:

  • 200 Ok - if the operation succeed
  • 400 Bad Request - if the source parameter is missing
  • 401 Unauthorized - if you are not authenticated
  • 403 Forbidden - if you are not logged in as an administrator

findByTarget

/api/integration/suggestiontargets/search/findByTarget?target=<:target-uuid>

The supported parameters are:

  • page, size see pagination
  • target: mandatory, the uuid that identify the target profile

It returns the list of targets with their suggestion count for the specified profile. Only suggestion targets that have at least one suggestion are returned. This endpoint is reserved to administrators and the owner of the target profile

Example:

{
  "_embedded": {
    "suggestiontargets": [
      {
        "id": "reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26",
        "display": "Bollini, Andrea",
        "source": "reciter",
        "total": 31,
        "type": "suggestiontarget",
        "_links": {
          "target": {
            "href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
          },
          "suggestions": {
            "href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26c&source=reciter"
          },
          "self": {
            "href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26"
          }
        }
      },
      {
        "id": "scopus:gf3d657-9d6d-4a87-b905-fef0f8cae26",
        "display": "Bollini, Andrea",
        "source": "scopus",
        "total": 11,
        "type": "suggestiontarget",
        "_links": {
          "target": {
            "href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
          },
          "suggestions": {
            "href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26&source=scopus"
          },
          "self": {
            "href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/scopus:gf3d657-9d6d-4a87-b905-fef0f8cae26"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://dspace7.4science.cloud/server/api/integration/suggestiontargets/search/findByTarget?target=gf3d657-9d6d-4a87-b905-fef0f8cae26"
    }
  },
  "page": {
    "size": 20,
    "totalElements": 2,
    "totalPages": 1,
    "number": 0
  }
}

Status codes:

  • 200 Ok - if the operation succeed
  • 204 No Content - if no suggestion targets are available for the specified profile
  • 400 Bad Request - if the target parameter is missing or invalid
  • 401 Unauthorized - if you are not authenticated
  • 403 Forbidden - if you are not logged in with sufficient permissions

/api/integration/suggestions

Suggestions Endpoints

Back to the list of all defined endpoints

Main Endpoint

/api/integration/suggestions

Unsupported. The suggestions can be retrieved only by source and target or via direct link, see the single entry and search method below.

single entry

GET api/integration/suggestions/<:suggestion-id>

It returns the data from one suggestion. The suggestion-id is a String generated by the source, as it must be unique for source, target and identified object to be imported it is usually represented by a combination of such elements

sample for a suggestion /api/integration/suggestions/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26:24694772

{
    "id": "reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26:24694772",
    "display": "publication one",
    "source": "reciter",
    "score": "62.7",
    "external-source-uri": "https://dspace7.4science.cloud/server/api/integration/reciterSourcesEntry/pubmed/entryValues/24694772",
    "evidences": {
      "acceptedRejectedEvidence": {
        "score": "2.7",
        "notes": "some notes, eventually empty or null"
      },
      "authorNameEvidence": {
        "score": "0",
        "notes": "some notes, eventually empty or null"
      },
      "journalCategoryEvidence": {
        "score": "6",
        "notes": "some notes, eventually empty or null"
      },
      "affiliationEvidence": {
        "score": "23.7",
        "notes": "some notes, eventually empty or null"
      },
      "relationshipEvidence": {
        "score": "9",
        "notes": "some notes, eventually empty or null"
      },
      "educationYearEvidence": {
        "score": "3.6",
        "notes": "some notes, eventually empty or null"
      },
      "personTypeEvidence": {
        "score": "4",
        "notes": "some notes, eventually empty or null"
      },
      "articleCountEvidence": {
        "score": "6.7",
        "notes": "some notes, eventually empty or null"
      },
      "averageClusteringEvidence": {
        "score": "7",
        "notes": "some notes, eventually empty or null"
      }
    },
    "metadata": {
        "dc.identifier.uri": [
          {
            "value": "https://publication/0000-0003-3681-2038",
            "language": null,
            "authority": null,
            "confidence": -1,
            "place": -1
          }
        ],
        "dc.title" : [
          {
            "value" : "publication one",
            "language" : null,
            "authority" : null,
            "confidence" : -1
          }
        ],
        "dc.date.issued" : [
          {
            "value" : "2010-11-03",
            "language" : null,
            "authority" : null,
            "confidence" : -1
          }
        ]
    },
    "type": "suggestion",
    "_links": {
      "target": {
        "href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
      },
      "self": {
        "href": "https://dspace7.4science.cloud/server/api/integration/suggestions/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26:24694772"
      }
    }
}

Search methods

Get suggestions by a given target

/api/integration/suggestions/search/findByTargetAndSource?target=:target-uuid&source=:source-key[&size=10&page=0]

It returns the list of suggestions and corresponding evidence from a specific source for the requested individual/target

The supported parameters are:

  • page, size see pagination. Data can be sorted by trust desc (default) or asc. Please note that the sort parameter must use the word trust instead than score for the sorting as score have a reserved meaning
  • target: mandatory, the uuid associated with your target profile
  • source: mandatory, the key of the source that you want to query for suggestion

Return codes:

  • 200 OK - if the operation succeed
  • 400 Bad Request - if the uuid parameter is missing or invalid

sample for a search /server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26c&source=reciter

{
  "_embedded": {
    "reciterSourceEntries": [
{
        "id": "24694772",
        "display": "publication one",
        "source": "reciter",
        "external-source-uri": "https://dspace7.4science.cloud/server/api/integration/reciterSourcesEntry/pubmed/entryValues/24694772",
        "evidences": {
          "acceptedRejectedEvidence": {
            "score": "2.7",
            "notes": "some notes, eventually empty or null"
          },
          "authorNameEvidence": {
            "score": "0",
            "notes": "some notes, eventually empty or null"
          },
          "journalCategoryEvidence": {
            "score": "6",
            "notes": "some notes, eventually empty or null"
          },
          "affiliationEvidence": {
            "score": "xxx",
            "notes": "some notes, eventually empty or null"
          },
          "relationshipEvidence": {
            "score": "9",
            "notes": "some notes, eventually empty or null"
          },
          "educationYearEvidence": {
            "score": "3.6",
            "notes": "some notes, eventually empty or null"
          },
          "personTypeEvidence": {
            "score": "4",
            "notes": "some notes, eventually empty or null"
          },
          "articleCountEvidence": {
            "score": "6.7",
            "notes": "some notes, eventually empty or null"
          },
          "averageClusteringEvidence": {
            "score": "7",
            "notes": "some notes, eventually empty or null"
          }
        },
        "metadata": {
            "dc.identifier.uri": [
              {
                "value": "https://publication/0000-0003-3681-2038",
                "language": null,
                "authority": null,
                "confidence": -1,
                "place": -1
              }
            ],
            "dc.title" : [
              {
                "value" : "publication one",
                "language" : null,
                "authority" : null,
                "confidence" : -1
              }
            ],
            "dc.date.issued" : [
              {
                "value" : "2010-11-03",
                "language" : null,
                "authority" : null,
                "confidence" : -1
              }
            ]
        },
        "type": "suggestion",
        "_links": {
          "target": {
            "href": "https://dspace7.4science.cloud/server/api/core/items/gf3d657-9d6d-4a87-b905-fef0f8cae26"
          },
          "self": {
            "href": "https://dspace7.4science.cloud/server/api/integration/suggestions/reciter:gf3d657-9d6d-4a87-b905-fef0f8cae26c:24694772"
          }
        }
      }
    ]
  },
  "_links": {
    "self": {
      "href": "https://dspace7.4science.cloud/server/api/integration/suggestions/search/findByTargetAndSource?target=gf3d657-9d6d-4a87-b905-fef0f8cae26c&source=reciter"
    }
  },
  "page": {
    "size": 20,
    "totalElements": 1,
    "totalPages": 1,
    "number": 0
  }
}

Import suggestion

See the WorkspaceItem endpoint for details on how to import a suggestion

Discard suggestion

DELETE api/integration/suggestions/<:suggestion-id>

This discard the given suggestion. The endpoint is restricted to owners of the suggestion target and administrators

Status codes:

  • 204 No content - if the operation succeed
  • 401 Unauthorized - if you are not authenticated
  • 403 Forbidden - if you are not logged in with sufficient permissions
  • 404 Not found - if the suggestion doesn't exist (or was already discarded)