Skip to content

Releases: NCEAS/vegbank2

2.1.2 (Patch)

01 Apr 21:52
9fceac6

Choose a tag to compare

What's Changed

  • Bug fix: Automatically created upload datasets do not attach user data (#502)
  • Bug fix: Adding error handler for unicode decode error when creating table inputs (#498)
  • Bug fix: Adding ON COMMIT DROP to all temp table inserts (#497)
  • Set up configurable logging (#501)
  • Dependencies: Updating versions on pygments and cryptography (#508); bump the all-dependencies group (#504)
  • Documentation updates (db-recovery.md‎ - #494; update pooler instructions and add example pooler config - #499; Update zip file README citation and add Dataset notes - #503; Release Process - #507)

Helm Chart Versions

Release Chart Version App Version
v2.1.2 1.1.2 2.1.2

v2.0.0-beta02

18 Mar 20:58
5ac7f62

Choose a tag to compare

What's Changed

Full Changelog: v2.0.0-beta01...v2.0.0-beta02

vegbank-2.1.1

01 Apr 21:01
v2.1.1
0d58bfc

Choose a tag to compare

v2.1.1 (Patch)

🔐 Security & Authentication

  • OIDC default scopes are now configurable via Helm values, replacing hardcoded scope strings (#487)

📦 Helm Chart Versions

Release Chart Version App Version
v2.1.1 1.1.1 2.1.1

values.yaml changes:

  • add auth.oidcDefaultScopes: "openid email profile"

vegbank-2.1.0

01 Apr 21:01
143c7af

Choose a tag to compare

v2.1.0

📤 Upload Improvements

  • Column type validation for uploaded plot observation tables (#445, #451)
  • Cover method upload updated to current standard: XOR validation for cover_code/cover_percent (#384)
  • Stratum method upload updated to current standard with validation and dataset creation support (#453)
  • Upload response now returns actual merge_action and accurate insert counts (#448)
  • Matched records no longer added as dataset items during upload (#468)

🔍 API Changes

  • Removed deprecated/unused fields from plot observation responses (interp_*, top_taxonX_name, number_of_taxa, boolean notes/revision fields) (#472)
  • Added optional status filter for plot observations (JSON and CSV-ZIP) (#463)
  • py_code added to GET user datasets response (#465)
  • has_observation_synonym returned in minimal plot observation view (#463)
  • VegBank API scopes now configurable via values.yaml (#462)
  • Stratum methods moved to admin scope (#453)
  • Removed obsolete POST endpoints (#458)
  • Enhanced sorting for dataset listings (#460)

🔖 DOI / EZID Integration

  • EZID client integration for minting and managing DOIs for user datasets (#412)
  • DOI registration and metadata published on successful dataset creation (#457)
  • DataCite XML metadata with contributor details, geolocation, funding references, and subject codes (#467)
  • EZID credentials managed via Helm values and Kubernetes secrets (#412)

🏗️ Infrastructure

  • Gunicorn added as production WSGI server; app refactored to Flask blueprints (#425)
  • WSGI header size limit enforced via new Helm value (#478)
  • Traefik ingress replaces nginx; legacy nginx references removed (#474)
  • PyJWT dependency removed (#476)

📖 Documentation

  • Comprehensive API documentation cleanup and OpenAPI spec updates (#469)

📦 Helm Chart Versions

Release Chart Version App Version
v2.1.0 1.1.0 2.1.0

vegbank-2.0.0

20 Mar 02:04
2b7333f

Choose a tag to compare

VegBank 2.0.0: Core Storage Service & API Release

Welcome to the first full production release of VegBank 2.0! This milestone marks a complete architectural evolution of VegBank, transitioning from a monolithic legacy system to a modern, decoupled, and highly scalable cloud-native platform.

This release introduces the core VegBank storage service and a brand-new REST API, providing a foundation for the next generation of vegetation plot data management.

📦 Core Components

  • VegBank Storage System: PostgreSQL-backed storage managed via CNPG (CloudNativePG), providing a high-availability cluster for production data.
  • VegBank API: A high-performance Flask REST interface that serves as the central gateway for all data operations.

🌿 Related VegBank Ecosystem Components

These projects are architecturally independent, maintained in separate repositories, and follow their own development and deployment cycles.

  • vegbankr: The official R client for programmatically interacting with the new API.
  • VegBank Web: The user-friendly R Shiny interface for exploring VegBank data at vegbank.org.

🚀 Key Highlights

🏛️ Modernized Storage System

The VegBank storage backend has been fully rebuilt and upgraded to a modern version of PostgreSQL.

  • High Availability: Deployed as a cluster of redundant databases within development and production Kubernetes environments.
  • Reliability: Includes scheduled backup processes and Flyway-managed migrations to ensure data integrity and seamless updates.
  • Schema Enhancements: While maintaining backward compatibility, we've introduced a new identifiers table. This allows for the storage of arbitrary external identifiers (e.g., DOIs) for VegBank resources, improving data interoperability.

🌐 Powerful REST API

A new, independent Flask-based REST API provides deep and flexible access to all core VegBank data types.

  • Rich Data Formats: Supports data retrieval in both JSON and Parquet formats.
  • Read/Write Access: Provides comprehensive read access for public users and secure write access for authorized contributors to upload plots, community classifications, taxon interpretations, and more.
  • Advanced Search: Integrated Full-Text Search (FTS) for plant concepts, community concepts, projects, parties, and plot observations.
  • Client Compatibility: Fully compatible with standard HTTP clients (curl, Postman) and the new vegbankr R package.

🏗️ Cloud-Native Infrastructure

VegBank 2.0 is built for the modern web using a containerized architecture.

  • Kubernetes & Helm: Fully orchestrated via Kubernetes with custom Helm charts for easy deployment and scaling.
  • Decoupled Architecture: The storage and API are now operationally independent of the VegBank website, ensuring that heavy data processing doesn't impact the user interface.
  • Security: Implemented OIDC-based authentication and robust API authorization layers.

🛠 What's Changed

Since the beta release, we have moved from a "read-mostly" interface to a fully functional, bi-directional data platform.

Key updates include:

📤 Expanded Data Contribution (Write API)

  • New Upload Pipelines: Functional upload endpoints are now live for Community Classifications, Community Concepts, and Plant Concepts.
  • Upfront Validation: We added rigorous validation logic for bulk Plot Observation and Concept uploads to catch and report data errors to users early in process, before they hit the database.
  • Complex Data Support: The upload flow now handles soil data, disturbance data, and contributor roles alongside standard plot observations.
  • Dataset Management: Users can now programmatically create and access "user-defined datasets", which are named collections of VegBank plot observations.

🔍 Enhanced Data Retrieval (Read API)

  • Enriched Responses: Plot observation responses now include soil and disturbance observations, named places, and contributor roles.
  • New Query Endpoints: Added GET endpoints for taxon importance, stem counts, strata, and contributor roles.
  • Export Options: Users can now download data as CSV ZIP files, augmenting the existing JSON and Parquet support.
  • Improved Search: Full-text search (FTS) is now maintained via the API (improving performance over legacy triggers) and includes the ability to search by VegBank (vb) codes.

🔐 Security & User Management

  • Authentication & Authorization: Full implementation of OIDC-based user authentication and API authorization to secure data contributions.
  • Token Management: Added a /refresh endpoint to handle session longevity for API users and integrated applications.

⚙️ Infrastructure & Performance

  • Database Reliability: Upgraded to the latest PostgreSQL version and established a robust bootstrap process from the legacy database.
  • Scalability: Implemented Nginx annotations to allow for large-scale data uploads and optimized the identifiers table for faster record lookups.
  • Production Hardening: Refined Kubernetes liveness/readiness probes and prepared comprehensive Helm production configurations and deployment documentation.

📝 Full Changelog

For a complete list of all PRs and technical changes included in this release, please see the Full Changelog.

⎈ Helm Chart 1.0.0 Release

Helm charts enable deployment on Kubernetes, thus streamlining the installation process and simplifying configuration management.

Version 1.0.0 is the first official release of the helm chart (tagged chart-1.0.0). The helm/README.md file describes in more detail how to use the Helm chart, and the helm/values.yaml file contains documentation about each individual setting.

v2.0.0-beta04

19 Mar 21:02
229e543

Choose a tag to compare

What's Changed

Full Changelog: chart-0.3.0...v2.0.0-beta04

v2.0.0-beta03

18 Mar 21:05

Choose a tag to compare

What's Changed

Full Changelog: chart-0.2.0...v2.0.0-beta03

Helm chart-0.3.0

18 Mar 21:04

Choose a tag to compare

What's Changed

Full Changelog: chart-0.2.0...chart-0.3.0

Helm chart-0.2.0

18 Mar 21:01
5ac7f62

Choose a tag to compare

What's Changed

Full Changelog: v2.0.0-beta01...chart-0.2.0

vegbank-2.0.0-beta01

21 Jan 01:56
6038dff

Choose a tag to compare

This is the initial beta release of VegBank 2.0, notably including:

  1. Configuration for and documentation of the newly developed Kubernetes deployment (including Helm charts) of the VegBank storage system, which includes an independent PostgreSQL-backed storage system and a public REST API application.
  2. A newly designed and deployed Flask REST API that provides an interface for retrieving data in various configurations from VegBank either as individual records or collections of records, returned as either JSON or Parquet. See the full API documentation for more details. Note that this beta release serves as the first official version of the VegBank "read" API, with further read enhancements and new "write" (i.e., upload) capabilities forthcoming in subsequent releases.