Conceptual Differences Between B2INST v2 and v3#
Introduction#
This document provides a conceptual overview of how the legacy B2INST v2 model differs from B2INST v3 (customized InvenioRDM v13). It is intended for data managers, community coordinators, and stakeholders who need to understand the model evolution (not low-level JSON details).
All examples below use fictional data for demonstration only.
General Model Evolution#
| Topic | B2INST v2 (legacy) | B2INST v3 |
|---|---|---|
| Foundation | Legacy B2INST/B2SHARE codebase | Customized InvenioRDM v13 |
| Primary focus | Instrument records with community-specific draft schemas | PIDINST-aligned instrument registry with stronger service-layer validation |
| Metadata style | Mixed/legacy field names (name, Instrument_Identifier, InstrumentTypes, …) |
Canonical B2INST root schema (Name, Identifier, InstrumentType, …) |
| Access model | open_access + optional embargo_date |
Structured access object (record, files, embargo) |
| Community linkage | Single community UUID in legacy JSON |
Structured parent/community model in record responses |
| PID handling | API commonly used Identifier + ePIC_PID in metadata (some internal exports had _pid) |
Structured top-level pids object |
| Files | Legacy file bucket references/flat legacy structures | files object with enabled, entries, links and access metadata |
Metadata Model Changes#
Key changes in B2INST v3#
- A single canonical instrument schema is used in metadata (
Name,Identifier,InstrumentType, etc.). - Legacy aliases are normalized during migration (e.g.
name->Name,Instrument_Identifier->Identifier). - The metadata is clearly instrument-centric (PIDINST profile), not generic dataset metadata.
SchemaVersionis standardized (1.0in the current implementation).- PIDINST compliance checks are enforced at publish time (e.g., landing page and core provenance/manufacturer/owner/model information).
Example (fictional)#
// v2 style (legacy API payload fragment)
{
"id": "14c4e9fdbd5f41a7af62048d6a6cbd7e",
"metadata": {
"community": "65084a2d-7819-4b0b-a250-0f48002792b5",
"Name": "TS-1000 Turbidity Sensor",
"open_access": true,
"Identifier": {
"identifierValue": "21.T11975/ts-1000",
"identifierType": "Handle"
},
"ePIC_PID": "http://hdl.handle.net/21.T11975/ts-1000",
"InstrumentType": [{"instrumentTypeName": "Turbidity Sensor"}],
"Manufacturer": [{"manufacturerName": "ClearWater Instruments"}],
"Owner": [{"ownerName": "River Research Institute"}]
}
}
// v2 legacy source payloads could also contain older aliases:
{
"name": "TS-1000 Turbidity Sensor",
"Instrument_Identifier": {
"Identifier": "21.T11975/ts-1000",
"identifierType": "Handle"
},
"InstrumentTypes": [{"instrumentTypeName": "Turbidity Sensor"}],
"Manufacturers": [{"manufacturerName": "ClearWater Instruments"}],
"Owners": [{"ownerName": "River Research Institute"}]
}
// v3 style (current B2INST payload)
{
"access": {
"record": "public",
"files": "public"
},
"files": {
"enabled": false
},
"metadata": {
"Name": "TS-1000 Turbidity Sensor",
"Identifier": {
"identifierType": "Handle",
"identifierValue": "21.T11975/ts-1000"
},
"InstrumentType": [{"instrumentTypeName": "Turbidity Sensor"}],
"Manufacturer": [{"manufacturerName": "ClearWater Instruments"}],
"Owner": [{"ownerName": "River Research Institute"}],
"Model": {"modelName": "TS-1000"},
"LandingPage": "https://example.org/instruments/ts-1000",
"SchemaVersion": "1.0"
}
}
Community and Extension Handling#
- v2: community was represented as a single UUID (
community) and legacy custom metadata could appear incommunity_specific. - v3: community relation is represented in the structured record model; extension fields are handled through the extension/custom-field mechanism (instead of embedding arbitrary legacy community objects in core metadata).
File and Access Handling#
- v2: access was mostly derived from
open_accessandembargo_date; file references were tied to legacy bucket/file structures. - v3: access is explicit via
access.record,access.files, and optionalaccess.embargo; files are represented in the modernfilessection with richer links/metadata.
Persistent Identifiers#
- v2: identifiers were mostly represented in API metadata fields (
Identifier,ePIC_PID), while some internal legacy exports also had_pid. - v3: persistent identifiers are exposed through a structured top-level
pidssection (provider/client/identifier fields), separate from instrument metadata fields.
Summary#
- B2INST v3 keeps the instrument-registry focus but moves to a cleaner, canonical schema and service model.
- Legacy naming and access patterns from v2 are normalized into explicit, structured objects.
- The v3 model is easier to validate, extend, and integrate via API workflows.
Last update : 02.02.2026
Last review : 02.02.2026