resource-catalogue-docs

Resource Catalogue Documentation [v6.1.0]

License Contributor Covenant


Description

Resource Catalogue Documentation provides a comprehensive guide to the API endpoints, models, and core components of the Resource Catalogue project, offering detailed descriptions of each controller, along with their associated functionalities and endpoints. It includes an overview of its data models and a detailed list of vocabularies used within the platform. Additionally, the documentation provides schemas for validating data of the various classes, ensuring consistency and reliability across the system.


Table of Contents

  1. API
  2. Swagger UI
  3. Controllers
    1. Adapter Controller
    2. Catalogue Controller
    3. Configuration Template Instance Controller
    4. Datasource Controller
    5. Deployable Application Controller
    6. Interoperability Record Controller
    7. Organisation Controller
    8. Public Controller
    9. Resource Interoperability Record Controller
    10. Service Controller
    11. Training Resource Controller
    12. Vocabulary Controller
  4. Model
    1. Adapter
    2. Catalogue
    3. Configuration Template Instance
    4. Datasource
    5. Deployable Application
    6. Interoperability Record
    7. Organisation
    8. Resource Interoperability Record
    9. Service
    10. Training Resource
    11. Vocabulary
  5. List of Vocabularies
  6. Data Validation
  7. External Services
  8. Federation Search

API


Swagger UI


Controllers


Model

Adapter

Field Type Required Description
id String auto-gen Unique identifier for the adapter.
name String Yes Name of the resource.
urls List<URL> No URLs resolving to the resource.
alternativePIDs List<AlternativePIDs> No Other persistent identifiers.
nodePID String Yes Node the resource belongs to.
description String Yes Description of the adapter.
publishingDate Date (ISO 8601) Yes Date in which the resource was made available for discovery and access to others.
type String Yes Type of the resource.
resourceOwner String Yes The organisation that manages or delivers the Resource.
linkedResource LinkedResource Yes Service or Guideline linked with the Adapter.
tagline String Yes Short tagline summarizing the adapter.
logo URL No Link to the logo/visual identity of the adapter.
documentation URL Yes Documentation webpage (e.g., read-the-docs page).
repository URL Yes Code repository webpage (e.g., a GitHub repository).
package List<URL> Yes Links to the latest package release page(s) (e.g., PyPI project, Docker image, GitHub releases page).
programmingLanguage String Yes Programming language.
license License No A license document that applies to this resource.
version String Yes Software version.
changeLog String Yes Changes in the latest version.
lastUpdate Date (ISO 8601) Yes Latest update date.
creators List<Creators> Yes The main researchers involved in producing the data, or the authors of the publication, in priority order.
publicContacts List<String> Yes List of public contact emails.
sqa Sqa No Software Quality Assurance information.

Nested Objects

AlternativePIDs
Field Type Required Description
pid String No PID.
pidSchema String No PID Schema.
LinkedResource
Field Type Required Description
resource_type String Yes Type of the linked resource (e.g., service, interoperability_record).
id String Yes ID of the linked resource.
License
Field Type Required Description
licenseName String No SPDX License.
licenseURL URL No A license document that applies to this content, typically indicated by URL.
Creators
Field Type Required Description
firstName String Yes The first name of the creator.
lastName String Yes Last name of the creator.
email String Yes Email of the creator.
role String No Role.
PIDs List<PIDs> No PIDs of the creator.
affiliations List<Affiliations> No Affiliations of the creator.
PIDs
Field Type Required Description
creatorPID String Yes Uniquely identifies an individual or legal entity, according to various schemes.
creatorPIDScheme String Yes Uniquely identifies the organizational affiliation of the creator.
Affiliations
Field Type Required Description
affiliationName String Yes The organizational or institutional affiliation of the creator.
affiliationIdentifier List<AffiliationIdentifier> No Uniquely identifies the organizational affiliation of the creator.
AffiliationIdentifier
Field Type Required Description
creatorID String Yes Creator ID.
creatorType String Yes Creator Type
SQA
Field Type Required Description
sqaURL URL No Sqa assessment results.
sqaBadge String No Sqa badge (bronze, silver, gold).

Example

{
  "id": "10.1234/adapter",
  "name": "Sample Adapter",
  "urls": [
    "https://example.com/adapter",
    "https://mirror.example.com/adapter"
  ],
  "alternativePIDs": [
    {
      "pid": "10.1234/alternative_adapter_pid",
      "pidSchema": "DOI"
    }
  ],
  "nodePID": "node-sandbox",
  "description": "This is a sample adapter description.",
  "publishingDate": "2026-01-01",
  "type": "Adapter",
  "resourceOwner": "10.1234/organisation",
  "linkedResource": {
    "resource_type": "service",
    "id": "10.1234/service"
  },
  "tagline": "Sample tagline",
  "logo": "https://example.com/logo.png",
  "documentation": "https://example.com/documentation",
  "repository": "https://example.com/repository",
  "package": [
    "https://example.com/package1",
    "https://example.com/package2"
  ],
  "programmingLanguage": "adapter_programming_language-python",
  "license": {
    "licenseName": "spdx_license-creative_commons",
    "licenseURL": "https://creativecommons.org/licenses/by/4.0/"
  },
  "version": "1.0.0",
  "changeLog": "Initial release.",
  "lastUpdate": "2026-01-01",
  "creators": [
    {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john.doe@example.com",
      "role": "credit-conceptualization",
      "PIDs": [
        {
          "creatorPID": "0000-0001-2345-6789",
          "creatorPIDScheme": "ORCID"
        }
      ],
      "affiliations": [
        {
          "affiliationName": "Sample Organisation",
          "affiliationIdentifier": [
            {
              "creatorID": "https://ror.org/example123",
              "creatorType": "ROR"
            }
          ]
        }
      ]
    }
  ],
  "publicContacts": [
    "support@example.com",
    "info@example.com"
  ],
  "sqa": {
    "sqaURL": "https://eosc-synergy/assessment-results",
    "sqaBadge": "sqa_badge-bronze"
  }
}

Catalogue

Field Type Required Description
id String auto-gen Unique identifier for the catalogue.
name String Yes Name of the catalogue.
urls List<URL> No URLs resolving to the resource.
alternativePIDs List<AlternativePIDs> No Other persistent identifiers.
nodePID String Yes Node the resource belongs to.
description String Yes Detailed description of the catalogue.
publishingDate Date Yes Date in which the resource was made available for discovery and access to others.
type String Yes Type of the resource.
resourceOwner String Yes The organisation that manages or delivers the Resource.
serviceProviders String No The name(s) (or abbreviation(s)) of Organisation(s) that manage or deliver the Catalogue in federated scenarios.
webpage URL Yes Webpage with information about the Catalogue usually hosted and maintained by the Organisation.
logo URL No Link to the logo/visual identity of the Resource.
scientificDomains List<ScientificDomains> No  
categories List<Categories> No  
accessTypes String Yes The way a user can access the resource (Remote, Physical, Virtual, etc.).
tags List<String> No Keywords associated to the Resource to simplify search by relevant keywords.
jurisdiction String Yes The property defines the jurisdiction of the users of the resource, based on the vocabulary for this property.
trl String Yes The Technology Readiness Level of the Resource.
termsOfUse URL No Webpage describing the rules, Resource conditions and usage policy which one must agree to abide by.
privacyPolicy URL No Link to the privacy policy applicable to the Resource.
accessPolicy URL No Information about the access policies that apply.
orderType String Yes Information on the ordering process type.
order URL No Webpage through which an order for the Resource can be placed.
mainContact MainContact Yes  
publicContacts List<String> Yes List of public contact emails.

Nested Objects

AlternativePIDs
Field Type Required Description
pid String No  
pidSchema String No  
ScientificDomains
Field Type Required Description
scientificDomain String No A named group of Organisations that offer access to the same type of Resources.
scientificSubdomain String No A named group of Organisations that offer access to the same type of Resources, within the defined domain.
Categories
Field Type Required Description
category String No A named group of Organisations that offer access to the same type of Resources.
subcategory String No A named group of Organisations that offer access to the same type of Resources, within the defined domain.
MainContact
Field Type Required Description
firstName String Yes First name of the main contact person.
lastName String Yes Last name of the main contact person.
email String Yes Email address of the main contact person.
role String No Role of the main contact person.
PIDs List<PIDs> No PIDs of the main contact person.
affiliations List<Affiliations> No Affiliations of the main contact person.
PIDs
Field Type Required Description
mainContactPID String Yes Uniquely identifies an individual or legal entity, according to various schemes.
mainContactPIDScheme String Yes Uniquely identifies the organizational affiliation of the main contact.
Affiliations
Field Type Required Description
affiliationName String Yes The organizational or institutional affiliation of the main contact.
affiliationIdentifier List<AffiliationIdentifier> No Uniquely identifies the organizational affiliation of the main contact.
AffiliationIdentifier
Field Type Required Description
mainContactID String Yes  
mainContactType String Yes  

Example

{
  "id": "10.1234/catalogue",
  "name": "Sample Catalogue",
  "urls": [
    "https://example.com/catalogue",
    "https://mirror.example.com/catalogue"
  ],
  "alternativePIDs": [
    {
      "pid": "10.1234/catalogue_alternative_pid",
      "pidSchema": "DOI"
    }
  ],
  "nodePID": "node-sandbox",
  "description": "A sample catalogue description.",
  "publishingDate": "2026-01-01",
  "type": "Catalogue",
  "resourceOwner": "10.1234/organisation",
  "serviceProviders": [
    "10.1234/organisation2",
    "10.1234/organisation3"
  ],
  "webpage": "https://example.com/catalogue/info",
  "logo": "https://example.com/catalogue/logo.png",
  "scientificDomains": [
    {
      "scientificDomain": "scientific_domain-agricultural_sciences",
      "scientificSubdomain": "scientific_subdomain-agricultural_sciences-agricultural_biotechnology"
    }
  ],
  "categories": [
    {
      "category": "category-access_physical_and_eInfrastructures-compute",
      "subcategory": "subcategory-access_physical_and_eInfrastructures-compute-container_management"
    }
  ],
  "accessTypes": "access_type-mail_in",
  "tags": [
    "innovation",
    "technology"
  ],
  "jurisdiction": "ds_jurisdiction-global",
  "trl": "trl-9",
  "termsOfUse": "https://example.com/catalogue/terms",
  "privacyPolicy": "https://example.com/catalogue/privacy",
  "accessPolicy": "https://example.com/catalogue/access-policy",
  "orderType": "order_type-open_access",
  "order": "https://example.com/catalogue/order",
  "mainContact": {
    "firstName": "Jane",
    "lastName": "Smith",
    "email": "jane.smith@example.com",
    "role": "credit-conceptualization",
    "PIDs": [
      {
        "mainContactPID": "0000-0001-2345-6789",
        "mainContactPIDScheme": "ORCID"
      }
    ],
    "affiliations": [
      {
        "affiliationName": "Sample Organisation",
        "affiliationIdentifier": [
          {
            "mainContactID": "https://ror.org/example123",
            "mainContactType": "ROR"
          }
        ]
      }
    ]
  },
  "publicContacts": [
    "support@example.com",
    "info@example.com"
  ]
}

Configuration Template Instance

Field Type Required Description
id String auto-gen Unique identifier for the configuration template instance.
resourceId String Yes Identifier of the resource associated with the instance.
configurationTemplateId String Yes Identifier of the configuration template used.
nodePID String Yes Configuration Template Instance’s original Node.
description String No Description.
payload Map<String, Object> Yes The configuration data or settings in JSON format.

Example

{
  "id": "10.1234/cti",
  "resourceId": "10.1234/service",
  "configurationTemplateId": "10.1234/con",
  "nodePID": "node-sandbox",
  "description": "This is a description",
  "payload": {
    "key1": "value",
    "key2": "value"
  }
}

Datasource

Field Type Required Description
id String auto-gen Unique identifier for the datasource.
name String Yes Name of the datasource.
urls List<URL> No URLs resolving to the datasource.
alternativePIDs List<AlternativePIDs> No Other persistent identifiers.
nodePID String Yes Node the resource belongs to.
description String Yes Description of the datasource.
publishingDate Date (ISO 8601) Yes Date in which the resource was made available for discovery and access to others.
type String Yes Type of the resource.
resourceOwner String Yes The organisation that manages or delivers the datasource.
serviceProviders List<String> No The name(s) (or abbreviation(s)) of Organisation(s) that manage or deliver the Service in federated scenarios.
webpage URL Yes Webpage with information about the Service usually hosted and maintained by the Organisation.
logo URL No Link to the logo/visual identity of the datasource.
jurisdiction String Yes The property defines the jurisdiction of the users of the data source, based on the vocabulary for this property.
scientificDomains List<ScientificDomains> No Scientific Domains and Subdomains.
categories List<Categories> No Categories and Subcategories.
accessTypes String Yes The way a user can access the datasource (Remote, Physical, Virtual, etc.).
tags List<String> No Keywords associated to the datasource to simplify search by relevant keywords.
trl String Yes The Technology Readiness Level of the datasource (to be further updated in the context of the EOSC).
termsOfUse URL No Webpage describing the rules, datasource conditions and usage policy which one must agree to abide by in order to use the datasource.
privacyPolicy URL No Link to the privacy policy applicable to the datasource.
accessPolicy URL No Information about the access policies that apply.
orderType String Yes Information on the ordering process type.
order URL No Webpage through which an order for the Resource can be placed.
mainContact MainContact Yes Main Contact of the Datasource.
publicContacts List<String> Yes List of public contact emails.
submissionPolicyURL URL No URL of the submission policy.
preservationPolicyURL URL No URL of the preservation policy.
versionControl Boolean No Indicates if version control is used.
persistentIdentitySystems List<PersistentIdentitySystem> No List of persistent identity systems associated with the datasource.
datasourceClassification String Yes The specific type of the data source based on the vocabulary defined for this property.
researchProductTypes String Yes The types of OpenAIRE products managed by the data source, based on the vocabulary for this property.
thematic Boolean Yes Boolean value specifying if the data source is dedicated to a given discipline or is instead discipline agnostic.
metadataLicense MetadataLicense No Metadata License.

Nested Objects

AlternativePIDs
Field Type Required Description
pid String No PID.
pidSchema String No PID Schema.
ScientificDomains
Field Type Required Description
scientificDomain String No The branch of science, scientific discipline that is related to the resource.
scientificSubdomain String No The sub-branch of science, scientific sub-discipline that is related to the resource.
Categories
Field Type Required Description
category String No A named group of Resources that offer access to the same type of Resources.
subcategory String No A named group of Resources that offer access to the same type of Resource or capabilities, within the defined Resource Category.
MainContact
Field Type Required Description
firstName String Yes First name of the main contact person.
lastName String Yes Last name of the main contact person.
email String Yes Email address of the main contact person.
role String No Role of the main contact person.
PIDs List<PIDs> No PIDs of the main contact person.
affiliations List<Affiliations> No Affiliations of the main contact person.
PIDs
Field Type Required Description
mainContactPID String Yes Uniquely identifies an individual or legal entity, according to various schemes.
mainContactPIDScheme String Yes Uniquely identifies the organizational affiliation of the main contact.
Affiliations
Field Type Required Description
affiliationName String Yes The organizational or institutional affiliation of the main contact.
affiliationIdentifier List<AffiliationIdentifier> No Uniquely identifies the organizational affiliation of the main contact.
AffiliationIdentifier
Field Type Required Description
mainContactID String Yes Main Contact ID.
mainContactType String Yes Main Contact Type.
PersistentIdentitySystem
Field Type Required Description
persistentIdentityProductType String No Specify the ProductType to which the persistent identifier is referring to.
persistentIdentityProductTypeSchemes String No Specify the list of persistent identifier schemes used to refer to ProductTypes.
MetadataLicense
Field Type Required Description
metadataLicenseName String No The name of the metadata License.
metadataLicenseURL URL No The url of the metadata License.

Example

{
  "id": "10.1234/datasource",
  "name": "European Research Data Repository",
  "urls": [
    "https://example.com/datasource",
    "https://mirror.example.com/datasource"
  ],
  "alternativePIDs": [
    {
      "pid": "10.1234/datasource_alternative_pid",
      "pidSchema": "DOI"
    }
  ],
  "nodePID": "node-sandbox",
  "description": "A comprehensive repository for European research data across multiple scientific domains.",
  "publishingDate": "2026-01-01",
  "type": "Repository",
  "resourceOwner": "10.1234/organisation",
  "serviceProviders": [
    "10.1234/organisation1",
    "10.1234/organisation2"
  ],
  "webpage": "https://example.com/datasource/info",
  "logo": "https://example.com/datasource/logo.png",
  "jurisdiction": "ds_jurisdiction-global",
  "scientificDomains": [
    {
      "scientificDomain": "scientific_domain-agricultural_sciences",
      "scientificSubdomain": "scientific_subdomain-agricultural_sciences-agricultural_biotechnology"
    }
  ],
  "categories": [
    {
      "category": "category-access_physical_and_eInfrastructures-compute",
      "subcategory": "subcategory-access_physical_and_eInfrastructures-compute-container_management"
    }
  ],
  "accessType": "access_type-mail_in",
  "tags": [
    "open data",
    "research",
    "EOSC"
  ],
  "trl": "trl-1",
  "termsOfUse": "https://example.com/datasource/terms",
  "privacyPolicy": "https://example.com/datasource/privacy",
  "accessPolicy": "https://example.com/datasource/access-policy",
  "orderType": "order_type-open_access",
  "order": "https://example.com/datasource/order",
  "mainContact": {
    "firstName": "Jane",
    "lastName": "Smith",
    "email": "jane.smith@example.com",
    "role": "credit-conceptualization",
    "PIDs": [
      {
        "mainContactPID": "0000-0001-2345-6789",
        "mainContactPIDScheme": "ORCID"
      }
    ],
    "affiliations": [
      {
        "affiliationName": "European Research Institute",
        "affiliationIdentifier": [
          {
            "mainContactID": "https://ror.org/example123",
            "mainContactType": "ROR"
          }
        ]
      }
    ]
  },
  "publicContacts": [
    "support@example.com",
    "info@example.com"
  ],
  "submissionPolicyURL": "https://example.com/datasource/submission-policy",
  "preservationPolicyURL": "https://example.com/datasource/preservation-policy",
  "versionControl": true,
  "persistentIdentitySystems": [
    {
      "persistentIdentityProductType": "ds_research_entity_type-research_data",
      "persistentIdentityProductTypeSchemes": "ds_persistent_identity_scheme-doi"
    }
  ],
  "datasourceClassification": "ds_classification-repository",
  "researchProductTypes": "ds_research_entity_type-research_data",
  "thematic": false,
  "metadataLicense": {
    "metadataLicenseName": "Creative Commons CC0 1.0",
    "metadataLicenseURL": "https://creativecommons.org/publicdomain/zero/1.0/"
  }
}

Deployable Application

Field Type Required Description
id String auto-gen Unique identifier for the deployable application.
name String Yes Name of the resource.
urls List<URL> No URLs resolving to the resource.
alternativePIDs List<AlternativePIDs> No Other persistent identifiers.
nodePID String Yes Node the resource belongs to.
description String Yes Description of the deployable application.
publishingDate Date Yes Date in which the resource was made available for discovery and access to others.
type String Yes Type of the resource.
resourceOwner String Yes The organisation that manages or delivers the Resource.
acronym String Yes Acronym of the deployable application.
tagline String No Short tagline summarizing the deployable application.
logo URL No Link to the logo/visual identity of the deployable application.
scientificDomains List<ScientificDomains> No  
tags List<String> No Keywords associated with the deployable application.
creators List<Creators> Yes The main researchers involved in producing the data, or the authors of the publication, in priority order.
publicContacts List<String> Yes List of public contact emails.
version String Yes Version of the deployable application.
lastUpdate Date (ISO 8601) No Date of the latest update.
license License No A license document that applies to this resource.

Nested Objects

AlternativePIDs
Field Type Required Description
pid String No PID.
pidSchema String No PID Schema.
ScientificDomains
Field Type Required Description
scientificDomain String No The branch of science, scientific discipline that is related to the resource.
scientificSubdomain String No The sub-branch of science, scientific discipline that is related to the resource.
Creators
Field Type Required Description
firstName String Yes The first name of the creator.
lastName String Yes Last name of the creator.
email String Yes Email of the creator.
role String No Role.
PIDs List<PIDs> No PIDs of the creator.
affiliations List<Affiliations> No Affiliations of the creator.
PIDs
Field Type Required Description
creatorPID String Yes Uniquely identifies an individual or legal entity, according to various schemes.
creatorPIDScheme String Yes Uniquely identifies the organizational affiliation of the creator.
Affiliations
Field Type Required Description
affiliationName String Yes The organizational or institutional affiliation of the creator.
affiliationIdentifier List<AffiliationIdentifier> No Uniquely identifies the organizational affiliation of the creator.
AffiliationIdentifier
Field Type Required Description
creatorID String Yes Creator ID.
creatorType String Yes Creator Type.
License
Field Type Required Description
licenseName String No SPDX License.
licenseURL URL No A license document that applies to this content, typically indicated by URL.

Example

{
  "id": "10.1234/deployable",
  "name": "Sample Deployable Application",
  "urls": [
    "https://example.com/deployable",
    "https://mirror.example.com/deployable"
  ],
  "alternativePIDs": [
    {
      "pid": "10.1234/deployable_alternative_pid",
      "pidSchema": "DOI"
    }
  ],
  "nodePID": "node-sandbox",
  "description": "A sample deployable application description.",
  "publishingDate": "2026-01-01",
  "type": "DeployableApplication",
  "resourceOwner": "10.1234/organisation",
  "acronym": "SDA",
  "tagline": "Sample tagline",
  "logo": "https://example.com/logo.png",
  "scientificDomains": [
    {
      "scientificDomain": "scientific_domain-agricultural_sciences",
      "scientificSubdomain": "scientific_subdomain-agricultural_sciences-agricultural_biotechnology"
    }
  ],
  "tags": [
    "tag1",
    "tag2"
  ],
  "creators": [
    {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john.doe@example.com",
      "role": "credit-conceptualization",
      "PIDs": [
        {
          "creatorPID": "0000-0001-2345-6789",
          "creatorPIDScheme": "ORCID"
        }
      ],
      "affiliations": [
        {
          "affiliationName": "Sample Organisation",
          "affiliationIdentifier": [
            {
              "creatorID": "https://ror.org/example123",
              "creatorType": "ROR"
            }
          ]
        }
      ]
    }
  ],
  "publicContacts": [
    "support@example.com",
    "info@example.com"
  ],
  "version": "v1",
  "lastUpdate": "2026-01-01",
  "license": {
    "licenseName": "spdx_license-creative_commons",
    "licenseURL": "https://creativecommons.org/licenses/by/4.0/"
  }
}

Interoperability Record

Field Type Required Description
id String auto-gen Unique identifier for the interoperability record.
name String Yes Name of the resource.
urls List<URL> No URLs resolving to the resource.
alternativePIDs List<AlternativePIDs> No Other persistent identifiers.
nodePID String Yes Node the resource belongs to.
description String Yes Description of the interoperability record.
publishingDate Date Yes Date in which the resource was made available for discovery and access to others.
type String Yes Type of the resource.
resourceOwner String Yes The organisation that manages or delivers the Resource.
resourceTypeInfo ResourceTypeInfo Yes  
relatedStandards List<RelatedStandard> No List of related standards connected to the interoperability record.
license License No A license document that applies to this resource.
creators List<Creators> Yes The main researchers involved in producing the data, or the authors of the publication, in priority order.
publicContacts List<String> Yes List of public contact emails.

Nested Objects

AlternativePIDs
Field Type Required Description
pid String No  
pidSchema String No  
ResourceTypeInfo
Field Type Required Description
resourceType String Yes A description of the resource (e.g., API, Configuration Template, Policy, Metadata Schema).
resourceTypeGeneral String Yes The general type of the resource.
RelatedStandard
Field Type Required Description
relatedStandardURI URL No URI linking to the related standard.
relatedStandardIdentifier String No Name or identifier of the related standard.
License
Field Type Required Description
licenseName String No SPDX License.
licenseURL URL No A license document that applies to this content, typically indicated by URL.
Creators
Field Type Required Description
firstName String Yes The first name of the creator.
lastName String Yes Last name of the creator.
email String Yes Email of the creator.
role String No  
PIDs List<PIDs> No PIDs of the creator.
affiliations List<Affiliations> No Affiliations of the creator.
PIDs
Field Type Required Description
creatorPID String Yes Uniquely identifies an individual or legal entity, according to various schemes.
creatorPIDScheme String Yes Uniquely identifies the organizational affiliation of the creator.
Affiliations
Field Type Required Description
affiliationName String Yes The organizational or institutional affiliation of the creator.
affiliationIdentifier List<AffiliationIdentifier> No Uniquely identifies the organizational affiliation of the creator.
AffiliationIdentifier
Field Type Required Description
creatorID String Yes  
creatorType String Yes  

Example

{
  "id": "10.1234/guideline",
  "name": "Sample Interoperability Record",
  "urls": [
    "https://example.com/guideline",
    "https://mirror.example.com/guideline"
  ],
  "alternativePIDs": [
    {
      "pid": "10.1234/guideline_alternative_pid",
      "pidSchema": "DOI"
    }
  ],
  "nodePID": "node-sandbox",
  "description": "A sample interoperability record description.",
  "publishingDate": "2026-01-01",
  "type": "InteroperabilityGuidelines",
  "resourceOwner": "10.1234/organisation",
  "resourceTypeInfo": {
    "resourceType": "API",
    "resourceTypeGeneral": "Software"
  },
  "relatedStandards": [
    {
      "relatedStandardURI": "https://example.com/standard",
      "relatedStandardIdentifier": "standard_001"
    }
  ],
  "license": {
    "licenseName": "spdx_license-creative_commons",
    "licenseURL": "https://creativecommons.org/licenses/by/4.0/"
  },
  "creators": [
    {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john.doe@example.com",
      "role": "credit-conceptualization",
      "PIDs": [
        {
          "creatorPID": "0000-0001-2345-6789",
          "creatorPIDScheme": "ORCID"
        }
      ],
      "affiliations": [
        {
          "affiliationName": "Research Institute",
          "affiliationIdentifier": [
            {
              "creatorID": "https://ror.org/example123",
              "creatorType": "ROR"
            }
          ]
        }
      ]
    }
  ],
  "publicContacts": [
    "support@example.com",
    "info@example.com"
  ]
}

Organisation

Field Type Required Description
id String auto-gen Unique identifier for the organisation.
name String Yes Full name of the organisation.
abbreviation String Yes Abbreviation of the organisation’s name.
alternativePIDs List<AlternativePIDs> No Other persistent identifiers.
nodePID String Yes Node the organisation is contributing to.
website URL Yes URL of the organisation’s website.
country String Yes Country of incorporation or physical location of the organisation or its coordinating centre in the case of distributed, virtual, and mobile providers.
legalEntity Boolean Yes Indicates if the organisation is a legal entity.
legalStatus String No Legal status of the organisation.
hostingLegalEntity String No Hosting legal entity responsible for the organisation.
description String Yes Description of the organisation.
logo URL Yes URL of the organisation’s logo.
multimedia List<MultimediaPair> No List of multimedia items associated with the organisation.
mainContact MainContact Yes Main contact information for the organisation.
publicContacts List<String> Yes List of public contact emails for the organisation.
users List<User> No List of users associated with the organisation.

Nested Objects

AlternativePIDs
Field Type Required Description
pid String No  
pidSchema String No  
MultimediaPair
Field Type Required Description
multimediaURL URL No URL to the multimedia resource.
multimediaName String No Name of the multimedia resource.
MainContact
Field Type Required Description
firstName String Yes First name of the main contact person.
lastName String Yes Last name of the main contact person.
email String Yes Email address of the main contact person.
role String No Role of the main contact person.
PIDs List<PIDs> No PIDs of the main contact person.
affiliations List<Affiliations> No Affiliations of the main contact person.
PIDs
Field Type Required Description
mainContactPID String Yes Uniquely identifies an individual or legal entity, according to various schemes.
mainContactPIDScheme String Yes Uniquely identifies the organizational affiliation of the main contact.
Affiliations
Field Type Required Description
affiliationName String Yes The organizational or institutional affiliation of the main contact.
affiliationIdentifier List<AffiliationIdentifier> No Uniquely identifies the organizational affiliation of the main contact.
AffiliationIdentifier
Field Type Required Description
mainContactID String Yes  
mainContactType String Yes  
User
Field Type Required Description
id String No Unique identifier for the organisation’s administrator.
name String Yes First name of the organisation’s administrator.
surname String Yes Last name of the organisation’s administrator.
email String Yes Email of the organisation’s administrator.

Example

{
  "id": "10.1234/organisation",
  "name": "Sample Organisation",
  "abbreviation": "ORG",
  "alternativePIDs": [
    {
      "pid": "10.1234/organisation_alternative_pid",
      "pidSchema": "ROR"
    }
  ],
  "nodePID": "node-sandbox",
  "website": "https://example.com",
  "country": "IT",
  "legalEntity": true,
  "legalStatus": "provider_legal_status-association",
  "hostingLegalEntity": null,
  "description": "This is a sample organisation description.",
  "logo": "https://example.com/logo.png",
  "multimedia": [
    {
      "multimediaURL": "https://example.com/media",
      "multimediaName": "Sample Multimedia"
    }
  ],
  "mainContact": {
    "firstName": "John",
    "lastName": "Doe",
    "email": "john.doe@example.com",
    "role": "credit-conceptualization",
    "PIDs": [
      {
        "mainContactPID": "0000-0001-2345-6789",
        "mainContactPIDScheme": "ORCID"
      }
    ],
    "affiliations": [
      {
        "affiliationName": "Sample Organisation",
        "affiliationIdentifier": [
          {
            "mainContactID": "https://ror.org/example123",
            "mainContactType": "ROR"
          }
        ]
      }
    ]
  },
  "publicContacts": [
    "info@example.com",
    "contact@example.com"
  ],
  "users": [
    {
      "id": "user_001",
      "name": "User Name",
      "surname": "Surname",
      "email": "user@example.com"
    }
  ]
}

Resource Interoperability Record

Field Type Required Description
id String auto-gen Unique identifier for the resource interoperability record.
resourceId String Yes Identifier of the resource associated with the record.
nodePID String No Resource Interoperability Record’s original Node.
interoperabilityRecordIds String Yes List of interoperability record IDs related to the resource.

Example

{
  "id": "rir/resource_interoperability_record",
  "resourceId": "10.1234/service",
  "nodePID": "node-sandbox",
  "interoperabilityRecordIds": [
    "10.1234/guideline1",
    "10.1234/guideline2"
  ]
}

Service

Field Type Required Description
id String auto-gen Unique identifier for the service.
name String Yes Name of the service.
urls List<URL> No URLs resolving to the resource.
alternativePIDs List<AlternativePIDs> No Other persistent identifiers.
nodePID String Yes Node the resource belongs to.
description String Yes Detailed description of the service.
publishingDate Date Yes Date in which the resource was made available for discovery and access to others.
type String Yes Type of the resource.
resourceOwner String Yes The organisation that manages or delivers the Resource.
serviceProviders String No The name(s) (or abbreviation(s)) of Organisation(s) that manage or deliver the Service in federated scenarios.
webpage URL Yes Webpage with information about the Service usually hosted and maintained by the Organisation.
logo URL No Link to the logo/visual identity of the Resource.
scientificDomains List<ScientificDomains> No  
categories List<Categories> No  
accessTypes String Yes The way a user can access the resource (Remote, Physical, Virtual, etc.).
tags List<String> No Keywords associated to the Resource to simplify search by relevant keywords.
jurisdiction String Yes The property defines the jurisdiction of the users of the resource, based on the vocabulary for this property.
trl String Yes The Technology Readiness Level of the Resource.
termsOfUse URL No Webpage describing the rules, Resource conditions and usage policy which one must agree to abide by.
privacyPolicy URL No Link to the privacy policy applicable to the Resource.
accessPolicy URL No Information about the access policies that apply.
orderType String Yes Information on the ordering process type.
order URL No Webpage through which an order for the Resource can be placed.
mainContact MainContact Yes  
publicContacts List<String> Yes List of public contact emails.

Nested Objects

AlternativePIDs
Field Type Required Description
pid String No  
pidSchema String No  
ScientificDomains
Field Type Required Description
scientificDomain String No A named group of Organisations that offer access to the same type of Resources.
scientificSubdomain String No A named group of Organisations that offer access to the same type of Resources, within the defined domain.
Categories
Field Type Required Description
category String No A named group of Organisations that offer access to the same type of Resources.
subcategory String No A named group of Organisations that offer access to the same type of Resources, within the defined domain.
MainContact
Field Type Required Description
firstName String Yes First name of the main contact person.
lastName String Yes Last name of the main contact person.
email String Yes Email address of the main contact person.
role String No Role of the main contact person.
PIDs List<PIDs> No PIDs of the main contact person.
affiliations List<Affiliations> No Affiliations of the main contact person.
PIDs
Field Type Required Description
mainContactPID String Yes Uniquely identifies an individual or legal entity, according to various schemes.
mainContactPIDScheme String Yes Uniquely identifies the organizational affiliation of the main contact.
Affiliations
Field Type Required Description
affiliationName String Yes The organizational or institutional affiliation of the main contact.
affiliationIdentifier List<AffiliationIdentifier> No Uniquely identifies the organizational affiliation of the main contact.
AffiliationIdentifier
Field Type Required Description
mainContactID String Yes  
mainContactType String Yes  

Example

{
  "id": "10.1234/service",
  "name": "Sample Service",
  "urls": [
    "https://example.com/service",
    "https://mirror.example.com/service"
  ],
  "alternativePIDs": [
    {
      "pid": "10.1234/service_alternative_pid",
      "pidSchema": "DOI"
    }
  ],
  "nodePID": "node-sandbox",
  "description": "A sample service description.",
  "publishingDate": "2026-01-01",
  "type": "Service",
  "resourceOwner": "10.1234/organisation",
  "serviceProviders": [
    "10.1234/organisation2",
    "10.1234/organisation3"
  ],
  "webpage": "https://example.com/service/info",
  "logo": "https://example.com/service/logo.png",
  "scientificDomains": [
    {
      "scientificDomain": "scientific_domain-agricultural_sciences",
      "scientificSubdomain": "scientific_subdomain-agricultural_sciences-agricultural_biotechnology"
    }
  ],
  "categories": [
    {
      "category": "category-access_physical_and_eInfrastructures-compute",
      "subcategory": "subcategory-access_physical_and_eInfrastructures-compute-container_management"
    }
  ],
  "accessTypes": "access_type-mail_in",
  "tags": [
    "innovation",
    "technology"
  ],
  "jurisdiction": "ds_jurisdiction-global",
  "trl": "trl-9",
  "termsOfUse": "https://example.com/service/terms",
  "privacyPolicy": "https://example.com/service/privacy",
  "accessPolicy": "https://example.com/service/access-policy",
  "orderType": "order_type-open_access",
  "order": "https://example.com/service/order",
  "mainContact": {
    "firstName": "Jane",
    "lastName": "Smith",
    "email": "jane.smith@example.com",
    "role": "credit-conceptualization",
    "PIDs": [
      {
        "mainContactPID": "0000-0001-2345-6789",
        "mainContactPIDScheme": "ORCID"
      }
    ],
    "affiliations": [
      {
        "affiliationName": "Sample Organisation",
        "affiliationIdentifier": [
          {
            "mainContactID": "https://ror.org/example123",
            "mainContactType": "ROR"
          }
        ]
      }
    ]
  },
  "publicContacts": [
    "support@example.com",
    "info@example.com"
  ]
}

Training Resource

Field Type Required Description
id String auto-gen Unique identifier for the training resource.
name String Yes Name of the resource.
urls List<URL> No URLs resolving to the resource.
alternativePIDs List<AlternativePIDs> No Other persistent identifiers.
nodePID String Yes Node the resource belongs to.
description String Yes Description of the resource.
publishingDate Date Yes Date in which the resource was made available for discovery and access to others.
type String Yes Type of the resource.
resourceOwner String Yes The organisation that manages or delivers the Resource.
eoscRelatedServices String No The name(s) of (all) the Provider(s) that manage or deliver the Resource in federated scenarios.
keywords List<String> No The keyword(s) or tag(s) used to describe the resource.
license License No A license document that applies to this resource.
accessRights String Yes The access status of a resource (open, restricted, paid).
versionDate Date Yes The version date for the most recently published or broadcast resource.
targetGroups List<String> Yes The principal users(s) for which the learning resource was designed.
learningResourceTypes String No The predominant type or kind that characterizes the learning resource.
learningOutcomes List<String> Yes The descriptions of what knowledge, skills or abilities students should acquire on completion of the resource.
expertiseLevel String Yes Target skill level in the topic being taught.
contentResourceTypes String No The predominant content type of the learning resource (video, game, diagram, slides, etc.).
qualifications String No Identification of certification, accreditation or badge obtained with course or learning resource.
duration String No Approximate or typical time it takes to work with or through the learning resource for the typical intended target audience.
languages String Yes The languages in which the resource was originally published or made available.
scientificDomains List<ScientificDomains> No  
creators List<Creators> Yes The main researchers involved in producing the data, or the authors of the publication, in priority order
publicContacts List<String> Yes List of public contact emails.

Nested Objects

AlternativePIDs
Field Type Required Description
pid String No  
pidSchema String No  
License
Field Type Required Description
licenseName String No SPDX License.
licenseURL URL No A license document that applies to this content, typically indicated by URL.
ScientificDomains
Field Type Required Description
scientificDomain String No A named group of Providers that offer access to the same type of Resources.
scientificSubdomain String No A named group of Providers that offer access to the same type of Resources, within the defined domain.
Creators
Field Type Required Description
firstName String Yes The first name of the creator.
lastName String Yes Last name of the creator.
email String Yes Email of the creator.
role String No  
PIDs List<PIDs> No PIDs of the main contact person.
affiliations List<Affiliations> No Affiliations of the main contact person.
PIDs
Field Type Required Description
creatorPID String Yes Uniquely identifies an individual or legal entity, according to various schemes.
creatorPIDScheme String Yes Uniquely identifies the organizational affiliation of the creator.
Affiliations
Field Type Required Description
affiliationName String Yes The organizational or institutional affiliation of the creator.
affiliationIdentifier List<AffiliationIdentifier> No Uniquely identifies the organizational affiliation of the creator.
AffiliationIdentifier
Field Type Required Description
creatorID String Yes  
creatorType String Yes  

Example

{
  "id": "10.1234/training",
  "name": "Introduction to Data Science",
  "urls": [
    "https://example.com/training-resource",
    "https://mirror.example.com/training-resource"
  ],
  "alternativePIDs": [
    {
      "pid": "10.1234/training_alternative_pid",
      "pidSchema": "DOI"
    }
  ],
  "nodePID": "node-sandbox",
  "description": "An introductory course on data science concepts.",
  "publishingDate": "2026-01-01",
  "type": "Course",
  "resourceOwner": "10.1234/organisation",
  "eoscRelatedServices": [
    "10.1234/service1",
    "10.1234/service2"
  ],
  "keywords": [
    "Data Science",
    "Machine Learning"
  ],
  "license": {
    "licenseName": "spdx_license-creative_commons",
    "licenseURL": "https://creativecommons.org/licenses/by/4.0/"
  },
  "accessRights": "tr_access_right-open_access",
  "versionDate": "2026-01-01",
  "targetGroups": [
    "target_user-businesses",
    "target_user-funders"
  ],
  "learningResourceTypes": "tr_dcmi_type-activity_plan",
  "learningOutcomes": [
    "Understand basics of data science",
    "Apply machine learning models"
  ],
  "expertiseLevel": "tr_expertise_level-advanced",
  "contentResourceTypes": "tr_content_resource_type-animation",
  "qualifications": "tr_qualification-badge",
  "duration": "2 years",
  "languages": [
    "aa",
    "en"
  ],
  "scientificDomains": [
    {
      "scientificDomain": "scientific_domain-agricultural_sciences",
      "scientificSubdomain": "scientific_subdomain-agricultural_sciences-agricultural_biotechnology"
    }
  ],
  "creators": [
    {
      "firstName": "John",
      "lastName": "Doe",
      "email": "john.doe@example.com",
      "role": "credit-conceptualization",
      "PIDs": [
        {
          "creatorPID": "0000-0001-2345-6789",
          "creatorPIDScheme": "ORCID"
        }
      ],
      "affiliations": [
        {
          "affiliationName": "Data Science Institute",
          "affiliationIdentifier": [
            {
              "creatorID": "https://ror.org/example123",
              "creatorType": "ROR"
            }
          ]
        }
      ]
    }
  ],
  "publicContacts": [
    "support@example.com",
    "info@example.com"
  ]
}

Vocabulary

Field Type Required Description
id String auto-gen A unique identifier for the vocabulary.
name String Yes The name of the vocabulary.
description String No A brief description of the vocabulary.
parentId String No The identifier of the parent vocabulary, if applicable.
type String Yes Specifies the type/category of the vocabulary.
extras Map<String, String> No A map for storing additional key-value pairs.

Example

{
  "id": "access_mode-free",
  "name": "Free",
  "description": "Users can freely access the Resource provided, registration may be needed.",
  "parentId": null,
  "type": "Access mode",
  "extras": {}
}

List of Vocabularies


Data Validation

This project provides LinkML schemas for validating your data. Users can validate their data files (e.g., YAML, JSON) against these schemas to ensure compliance with the defined structure, data types, and constraints. Simply provide your data and use LinkML’s built-in tools or Python libraries to run the validation process. Errors or mismatches will be reported to help you identify and fix issues.

Quick Guide (Linux based systems):

To validate your data against the provided LinkML schemas:

  1. Install LinkML pip install linkml
  2. Download schemas folder
  3. Create a folder for your data mkdir path/to/data
  4. Run the validation command linkml-validate -s path/to/schemas/schema.yaml path/to/data/data.yaml

External Services

Standalone

  1. Node Endpoint – The EOSC Node Endpoint and its UI together provide a backend service and user interface that expose an EOSC node’s capabilities, enabling user-friendly discovery and interaction with the node’s services and resources. You can find more info at:
    1. EOSC Node Endpoint
    2. EOSC Node Endpoint UI

Integrated

In addition to its core functionality, this project also integrates with external services that extend its capabilities. These services are optional but can provide added value depending on the use case:

  1. PID Service – The Persistent Identifiers (PID) Service offers a robust, reliable solution for the long-term identification and management of digital objects underpinned by leading European data centers and cutting-edge technology. Read the docs
  2. Helpdesk Service - The EOSC Helpdesk provides you with the information and support you need to troubleshoot your service problems. You can report incidents, bugs or change requests. Read the docs
  3. Accounting Service – The EOSC Accounting for Services is a comprehensive platform designed to streamline the collection, aggregation, and exchange of metrics across various infrastructures, providers, and projects. Read the docs

The Federation Search is a companion service that aggregates resources from multiple Resource Catalogue instances into a single API endpoint. It connects to each configured catalogue node and fans out queries across them, merging the results into a unified response.

Federation Search relies on the /public/{resource_type}/search endpoints of each node to perform full-text, highlighted searches across the federation. The following Public Controller endpoints are consumed by the service:

Resource Type Endpoint
Adapter /public/adapter/search
Catalogue /public/catalogue/search
Datasource /public/datasource/search
Deployable Application /public/deployableApplication/search
Interoperability Record /public/interoperabilityRecord/search
Organisation /public/organisation/search
Service /public/service/search
Training Resource /public/trainingResource/search

For configuration and deployment details, refer to the Federation Search repository.