API Changelog
All notable changes to the Public Dataset API will be documented here.
[1.3.0] - 2026-10-13
Changed
-
New layout of the downloadable dataset (Excel and the new CSV), see The dataset files:
- Excel sheets: README (version, license, citation, conventions), Runs, Publications and Dictionary.
- Runs: one row per run, flat columns grouped by topic, no JSON in cells.
- Fixed units: every value is in the unit named in its column (
voltage_kV,flow_rate_mL_h,fiber_diameter_nm, …), converted from the unit it was entered in. Empty cells mean "not reported". - Identifiers:
doiholds only real DOIs; web links go topublication_url. - Versions released before this change keep their original layout.
-
Review feedback for contributors. A moderator's
commenton/moderation/{id}/status(and approve/reject) is now stored with the run. The owner of a contribution gets it in/data/my-submissionsand/data/submission/{id}asreviewNoteandreviewedAt; runs that need an update also carryopenIssues(what is missing, in words). These fields never appear in the public dataset. -
DELETE /data/submission/{id}: the contributor withdraws a contribution; its runs that are not approved are deleted, approved runs stay. -
PUT /data/update-submission/{id}: runs of the contribution that are missing from the request are deleted (approved runs excepted) and returned asremovedRecords. A rejected run is changed only when it carries"resubmit": true; it then goes back to review. Every edited run that is complete goes back toPENDING. -
New layout of the image dataset (zip), see The image dataset:
README.md, an indeximages.csv(one row per image with format, size in pixels, checksum, scale bar, magnification and the run's key values),runs.csv(the runs with images, in the dataset's columns), and the images asimages/{record_id}/{image_id}_{type}.{ext}with their real file extension. The per-imageannotations/*.jsonfiles are gone; image files missing on the server are left out instead of written as empty files. -
Explore view and ML features: columns labelled with a unit (Voltage (kV), Flow Rate (mL/h), Fiber Diameter (nm), …) now hold values converted to that unit; before, values entered in another unit were shown unconverted. Exports from the Explore view write empty cells instead of
-.
Added
format=csvfor/public/dataset/exportand/{version}/export, and/cache/download/csv(/{id}) for the website's download.- The downloaded file can be uploaded again (bulk upload, and the web form's Import from Excel).
- Bulk upload: an optional Solutions sheet describes solutions that Data rows refer to with
solution(a mix of separately prepared solutions) orcore_solution/middle_solution/shell_solution(coaxial, triaxial), with channel flow ratesflow_rate_core/flow_rate_middle/flow_rate_shell./data/import/validateand/commitaccept the sheet's rows assolutions; the report returns them with their problems and the rows using them. - Dataset filters
polymerType(Homopolymer,Copolymer,Blend,Core/shell) andsolutionPreparation(Single solution,Mixed solutions,Core/shell solutions), also in the dataset explorer. The Excel export'spolymer_typesayscore/shellfor runs with separate channel solutions. - Coaxial and triaxial runs can describe a solution per needle channel:
solutionsthen holds one feed per channel ("channel": "CORE","SHELL", and"MIDDLE"for triaxial), each dissolved together (one stock) or mixed, with its own measuredproperties(viscosity, surface tension, conductivity, evaporation rate, pH). The channels must match the needle type.processParametercarriesflowRateCore,flowRateMiddle,flowRateShell(inflowRateUnit);flowRateis then their sum. Such records have no singlesolutionProperty.concentration. The Excel export addsflow_rate_core,flow_rate_middleandflow_rate_shell. - Records can describe a spun solution mixed from separately prepared solutions:
solutionsis a list of feeds (for now one,channel: "MAIN"), each{"preparation": "MIXED", "mixRatioUnit": "v/v" | "w/w", "stocks": [...]}. A stock has its ownpolymers,solvents,additives,concentration(+ unit) andsharein the mix; ratios inside a stock are within that stock. Absentsolutionsmeans everything was dissolved together, as before. Withsolutions, the flat fields are a view of the spun solution:solutionProperty.concentrationis the derived polymer concentration,weightRatio/volumeRatioare shares of all polymer / all solvent (null where not derivable), and each component carries astockindex.effectiveValuesEstimatedis true for a v/v mix of wt% solutions, where the derivation assumes equal densities. The Excel export addssolution_preparation(e.g. "Mixed 70:30 v/v: A = PCL 10 wt% in DCM; B = GELATIN 8 wt% in HFIP") andsolutions(JSON). - Copolymers are described in the polymer list:
GET /metadata/polymersreturnspolymerType(HOMOPOLYMER/COPOLYMER),architecture(RANDOM,ALTERNATING,BLOCK,GRAFT) andmonomers(composition order, e.g. PLGA =["LA", "GA"]). New:GET /metadata/monomers,GET /metadata/additives. polymerComponents[]carries a copolymer'scomposition([{"monomer": "LA", "fraction": 75}, …]),compositionUnit(mol%/wt%) and a read-onlycopolymerflag.- Records carry
additives([{"additiveName", "amount", "amountUnit", "amountBasis"}]).amountUnitiswt%ormg/mL;amountBasissays what the amount is relative to:polymer,solutionorsolvent(mg/mLonly of the solution or the solvent). Without a basis,wt%means of the polymer andmg/mLof the solution. The Excel export and upload template haveadditive_N_amount_basis. - Needle sizes can be given as a gauge or as an inner diameter in mm:
needleDefinition.diameterUnit(andinnerDiameterUnit,middleDiameterUnit,outerDiameterUnit) isGormm. The upload template'sneedle_gaugecolumns get a unit column (needle_gauge_unit, …); the Excel export hasneedle_diameter_mm(and inner, middle, outer) next to the gauge columns. The needle filter and the ML features use gauges only. - Excel export:
polymer_type(homopolymer / copolymer / blend),additive_components,additive(s)at the end. ML and Virtual Lab datasets gain the categorical features Polymer Type and Additive(s). - A write request can define a polymer that is not in the list yet, e.g. a new copolymer: give the component a
newPolymerobject (polymerType,architecture,monomers, optionalfullName,casNumber,note). It is filed for an administrator's review; the record is stored asNEEDS_UPDATE(itsmissingFieldssay it awaits approval) and goes to review automatically once the polymer is approved. Reading such a record returns the waiting component withnewPolymerandpendingApproval: true.
Changed
- The polymer list no longer contains additives (silver nitrate, nanoparticles, drugs, …); they moved to the additive list. Duplicates (e.g. PA6, SILK, PEO_4000) were merged; their old names are still accepted as aliases.
- The Excel export's
polymer(s)column joins blend members with+instead of-, so a blend no longer looks like a copolymer name such as PVDF-HFP.
Fixed
GET /data/submission/{id}returned any contribution to any signed-in user; it is now limited to the contributor and to moderators.
[1.2.0] - 2026-10-12
Added
- Dataset records carry provenance:
dataOrigin(LITERATURE/OWN_LAB),sourceLocation(e.g. "Table 2"),extractionMethod(REPORTED/DIGITISED/ESTIMATED) andcompletenessScore(0-100). fiberPropertycarries the diameter's precision:fiberDiameterQualifier(EXACT/APPROXIMATE/RANGE),fiberDiameterMin,fiberDiameterMax(for ranges;fiberDiameterthen holds the midpoint),diameterMethodanddiameterNMeasured.- The Excel export has matching columns at the end; existing column positions are unchanged.
- Authenticated bulk upload:
GET /data/import/template,POST /data/import/parse,/validateand/commit(see Contributing data).
Changed
- Write requests (
/data/submit,/data/update) check the same mandatory fields as the web form and reject invalid values (unknown units, out-of-range numbers) with a message naming the field. See Authentication & API Tokens.
[1.1.0] - 2026-05-10
Changed
- Migrated public read-only API to a dedicated subdomain:
https://api.electrospinning-data.org/public/dataset. - Standardized documentation terminology: "read-only API," "dataset records," and "version snapshots."
- Improved code examples (cURL, Python, R) with explicit output filenames and research-oriented comments.
- Updated OpenAPI specification to reflect the new production domain and paths.
[1.0.0] - 2026-05-09
Added
- Initial release of the Public Dataset REST API (
/api/public/v1/*). - Fully unauthenticated programmatic access.
- Support for complex filtering using JSON objects (Voltage, Morphology, Polymers, Collector Types).
- Export endpoints for JSON, XLSX, and Cache ZIP bundles.
- OpenAPI specification documentation directly integrated into this developer portal.