New Admins: Register for our new Pure Lecture Series!
Pure's logos
Pure Help Center for Pure Administrators

If you are a researcher, or other non-admin at your institution, click here.

  • Home
  • Announcements
  • Release Notes
  • Technical user guides
  • Training
  • Events
  • Support
  • Contact Us
  • Home
  • Training
  • Technical user guides
  • Pure API

How Can We Help?

Search Results

Filter By Category

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Contact us

Pure API: Working with Research output types (and subtypes in general)Pure API: Working with Research output types (and subtypes in general)

The Research output type is a bit special in the Pure API, because you will always work with one of its subtypes, and there is an implicit coupling with the "type" classification.

Let's first have a look at the OpenAPI3 schema for a definition of the allowed subtypes (Anything that is not relevant to this discussion has been removed):

    ResearchOutput:
      required:
      - typeDiscriminator
      type: object
      properties:
        typeDiscriminator:
          type: string
        type:
          $ref: '#/components/schemas/ClassificationRef'
      discriminator:
        propertyName: typeDiscriminator
        mapping:
          BookAnthology: '#/components/schemas/BookAnthology'
          ContributionToBookAnthology: '#/components/schemas/ContributionToBookAnthology'
          ContributionToConference: '#/components/schemas/ContributionToConference'
          ContributionToJournal: '#/components/schemas/ContributionToJournal'
          ContributionToMemorandum: '#/components/schemas/ContributionToMemorandum'
          ContributionToPeriodical: '#/components/schemas/ContributionToPeriodical'
          Memorandum: '#/components/schemas/Memorandum'
          NonTextual: '#/components/schemas/NonTextual'
          OtherContribution: '#/components/schemas/OtherContribution'
          Patent: '#/components/schemas/Patent'
          Thesis: '#/components/schemas/Thesis'
          WorkingPaper: '#/components/schemas/WorkingPaper'

From this we can see that Research output has a number of subtypes (the discriminator section), and in practice you would always be using one of these and not the "abstract" ResearchOutput object. Any of the subtypes will include all properties from the Researchoutput object, as an example here is the relevant parts of the BookAnthology definition:

    BookAnthology:
      required:
      - category
      - contributors
      - language
      - managingOrganization
      - publicationStatuses
      - title
      - type
      type: object
      description: "Books, reports and anthologies/collected works where the author(s)\
        \ are responsible for the entire work."
      allOf:
      - $ref: '#/components/schemas/ResearchOutput'
      - type: object
        properties:
          commissioningBody:
            $ref: '#/components/schemas/ExternalOrganizationRef'

The "allOf" construct specifies that the BookAnthology object is composed of the definition of the ResearchOutput object in addition to its own definition, which starts with the "- type: object" section.

If you use a generated webservice client this will typically be handled for you through the programming language' inbuilt inheritance mechanisms if it supports that.

In Pure there is a coupling between the structural subtype of ResearchOutput and the chosen value of the "type" classification property. The allowed values of this value set is defined in the "allowed-types" helper method on the "research-output" endpoint which will return a list of "Classification" objects that can be used to build the "ClassificationRef" object that the property expects. In practice the "uri" property is used as a natural key for the classification. Here is the definition of the ClassificationRef and a sample output from the "allowed-types" operation:

    ClassificationRef:
      required:
      - uri
      type: object
      properties:
        uri:
          type: string
          description: Classification URI of the referred classification

 

{
  "classifications": [
    {
      "uri": "/dk/atira/pure/researchoutput/researchoutputtypes/bookanthology/book",
      "term": {
        "en_US": "Book",
        "da_DK": "Bog",
        "nl_NL": "Boek"
      }
    },
    {
      "uri": "/dk/atira/pure/researchoutput/researchoutputtypes/bookanthology/anthology",
      "term": {
        "en_US": "Anthology",
        "da_DK": "Antologi",
        "nl_NL": "Anthologie"
      }
    },
    {
      "uri": "/dk/atira/pure/researchoutput/researchoutputtypes/bookanthology/commissioned",
      "term": {
        "en_US": "Commissioned report",
        "da_DK": "Rekvireret rapport",
        "nl_NL": "Opgedragen rapport"
      }
    }  
  ]
}

The Research output type classification uri's are hierarchical, so here I've shown the three allowed values for bookanthology. The token after "researchoutputtypes" indicates the structural type, in this case "bookanthology" which corresponds to the "BookAnthology" type, the last part is a semantic specialization that doesn't have a direct structural impact. The Pure API will validate that a valid type classification is submitted on save.

 

 

 

Published at December 12, 2024

Download
Related Articles
  • Getting started: Pure API user guide
  • Pure API: Access definitions for content and field filtering
  • Testing the Pure API: A Beginner's Guide
  • Testing the Pure API Using RapiDoc
  • Python API Requests: Fundamental Coding Examples
Keywords
  • subtypes
  • research output

Was this article helpful?

Yes
No
Give feedback about this article

    About Pure

  • Announcements

    Additional Support

  • Events
  • Client Community
  • Training

    Need Help?

  • Contact Us
  • Submit a Support Case
  • My Cases
  • Linkedin
  • Twitter
  • Facebook
  • Youtube
Elsevier logo Relx logo

Copyright © 2025 Elsevier, except certain content provided by third parties.

  • Terms & Conditions Terms & Conditions
  • Privacy policyPrivacy policy
  • AccesibilityAccesibility
  • Cookie SettingsCookie Settings
  • Log in to Pure Help CenterLog in to Helpjuice Center

Knowledge Base Software powered by Helpjuice

Expand