ESGVOC API#
Overview#
The ESGVOC Python API provides a powerful and read-only interface to query controlled vocabularies. Users can retrieve, search, and validate vocabulary terms programmatically using a clean and intuitive API.
Key features#
The API offers three main types of functions:
- Retrieve functions ( - get_*)- Fetch collections, terms or data descriptors. 
- Examples: - Retrieve all data descriptors in the universe CV. 
- Retrieve all terms within a specific collection or project. 
- Retrieve a collection in a specific project. 
 
 
- Search functions ( - find_*)- Search for terms based on expression (keywords, wildcard * and boolean operators). 
- Examples: - Search for terms in a data descriptor. 
- Search for terms within a project or collection. 
 
 
- Validation functions ( - valid_*)- Validate the compliance of an input string with controlled vocabulary rules (i.e., DRS name). 
- Examples: - Check if a term is valid within a collection. 
- Check if a term is valid within a project. 
 
 
Example usage#
Below are some examples of how to use the API. For complete documentation, refer to the API documentation or the Notebook Guide.
import esgvoc.api as ev
# Retrieve Functions
ev.get_all_data_descriptors_in_universe()
ev.get_all_terms_in_data_descriptor(data_descriptor_id="activity")
ev.get_term_in_universe(term_id='ipsl')
ev.get_term_in_data_descriptor(data_descriptor_id='institution', term_id='ipsl')
ev.get_data_descriptor_in_universe(data_descriptor_id='variable')
ev.get_all_projects()
ev.get_all_collections_in_project(project_id="cmip6plus")
ev.get_all_terms_in_collection(project_id="cmip6plus", collection_id="activity_id")
ev.get_project(project_id='cmip6')
ev.get_term_in_project(project_id='cmip6', term_id='ipsl')
ev.get_term_in_collection(project_id='cmip6', collection_id='institution_id', term_id='ipsl')
ev.get_collection_in_project(project_id='cmip6', collection_id='variable_id')
# Search Functions
ev.find_data_descriptors_in_universe(expression='var*')
ev.find_terms_in_data_descriptor(expression='aerchemmip', data_descriptor_id="activity")
ev.find_terms_in_universe(expression="aer*mip")
ev.find_items_in_universe(expression='ParIS NOT CNES')
ev.find_collections_in_project(expression='_id', project_id='cmip6')
ev.find_terms_in_collection(expression='aerchemmip', project_id='cmip6', collection_id="activity")
ev.find_terms_in_project(expression="aer*mip", project_id='cmip6')
ev.find_items_in_project(expression='ParIS AND ipsl', project_id='cmip6', limit=10)
# Validation Functions
ev.valid_term_in_collection(value="ipsl", project_id="cmip6plus", collection_id="institution_id")
ev.valid_term_in_project(value="some_term", project_id="cmip6plus")
Structured data with Pydantic models#
One of the key benefits of using this library is that the returned terms are Pydantic objects representing the requested terms. This provides several advantages:
Structured data#
Each term is encapsulated in a well-defined Pydantic model, ensuring that the data is structured and adheres to a defined schema.
Ease of integration#
Since Pydantic objects are Python-native and compatible with many frameworks, the terms can be seamlessly integrated into third-party software, such as:
- Web Frameworks: Using terms directly in APIs or web applications (e.g., FastAPI, Django). 
- Data Pipelines: Injecting validated terms into ETL workflows or analytics systems. 
- Configuration Management: Mapping terms into application configurations or schemas.