dataverse_schema
Pydantic models for the Dataverse '/api/metadatablocks' schema response.
This models the schema definition JSON itself (block -> fields -> optional recursive childFields), not an individual dataset's metadata values. Use it to parse, validate, and query the schema (e.g. "what fields exist in the citation block?", "is authorAffiliation required?", "what controlled vocab values does subject accept?").
DataverseSchemaResponse
Bases: BaseModel
Top-level wrapper matching the raw JSON returned by /api/metadatablocks.
Source code in src/dv_schema_models/dataverse_schema.py
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | |
block_names()
List the short names of every block in the response.
Source code in src/dv_schema_models/dataverse_schema.py
102 103 104 | |
get_block(block_name)
Look up a metadata block by its short name (e.g. 'citation', 'geospatial').
Source code in src/dv_schema_models/dataverse_schema.py
98 99 100 | |
MetadataBlock
Bases: BaseModel
A single metadata block (e.g. citation, geospatial, astrophysics).
Source code in src/dv_schema_models/dataverse_schema.py
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | |
all_leaf_fields()
Flatten every leaf field in this block (including nested ones) into a single dict.
Source code in src/dv_schema_models/dataverse_schema.py
77 78 79 80 81 82 83 | |
get_field(field_name)
Look up a top-level field in this block by its key name.
Source code in src/dv_schema_models/dataverse_schema.py
73 74 75 | |
required_fields()
Return the names of all leaf fields marked isRequired = True.
Source code in src/dv_schema_models/dataverse_schema.py
85 86 87 | |
MetadataField
Bases: BaseModel
A single metadata field definition.
For compound fields (typeClass == 'compound'), childFields holds the
nested sub-fields, keyed by field name, recursively using this same model.
Leaf fields (primitive or controlledVocabulary) have childFields = None.
Source code in src/dv_schema_models/dataverse_schema.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | |
is_compound()
Return True if this field wraps nested childFields rather than holding a value directly.
Source code in src/dv_schema_models/dataverse_schema.py
44 45 46 | |
iter_leaf_fields()
Recursively collect every leaf (non-compound) field reachable from this field.
Source code in src/dv_schema_models/dataverse_schema.py
48 49 50 51 52 53 54 55 | |
load_schema(metadata)
Parse a metadatablocks JSON payload (already loaded as a dict) into a DataverseSchemaResponse.
Source code in src/dv_schema_models/dataverse_schema.py
107 108 109 | |