Skip to content

upload

Upload a TSP package to Zenodo.

Synopsis

tsp-maker upload TSP_PATH --token TOKEN [OPTIONS]

Arguments

Argument Description
TSP_PATH Path to TSP package directory

Options

Option Required Default Description
--token Yes Zenodo API token (or ZENODO_TOKEN env var)
--production No Upload to production Zenodo (default: sandbox)
--publish No Publish after upload (assigns DOI)
-q, --quiet No Suppress progress output

Examples

Test on Sandbox

# Create draft (review before publishing)
tsp-maker upload /my-dataset --token $ZENODO_SANDBOX_TOKEN

# Create and publish
tsp-maker upload /my-dataset --token $ZENODO_SANDBOX_TOKEN --publish

Production Upload

tsp-maker upload /my-dataset \
    --token $ZENODO_TOKEN \
    --production \
    --publish

Production Uploads are Permanent

Production uploads with --publish create permanent records with real DOIs. Always test on sandbox first!

Using Environment Variables

export ZENODO_TOKEN="your-token-here"
tsp-maker upload /my-dataset --publish

Workflow

  1. Draft deposit created on Zenodo
  2. Files uploaded (flattened structure)
  3. Metadata set from datapackage.json
  4. Published (if --publish flag)

File Mapping

Zenodo doesn't support subdirectories, so files are flattened:

TSP Path Zenodo Name
datapackage.json datapackage.json
metadata.parquet metadata.parquet
structures/batch_001.tar.gz structures_batch_001.tar.gz
predictions/scores.parquet predictions_scores.parquet
predictions/pae/batch_001.tar.gz pae_batch_001.tar.gz

Zenodo Metadata

Metadata is automatically extracted from datapackage.json:

TSP Field Zenodo Field
title Title
description Description
contributors Creators
licenses License

Additional keywords are added based on predictors used.

Output

On success, the command displays:

Deposit info:
  ID: 12345
  DOI: 10.5281/zenodo.12345
  URL: https://zenodo.org/records/12345

API Token Setup

  1. Go to Zenodo (or sandbox.zenodo.org)
  2. SettingsApplicationsPersonal access tokens
  3. Create token with deposit:write scope

Separate Tokens

Use different tokens for sandbox and production:

export ZENODO_SANDBOX_TOKEN="sandbox-token"
export ZENODO_TOKEN="production-token"

Error Handling

Common errors:

Error Cause Solution
401 Unauthorized Invalid token Check token is correct and has deposit:write scope
400 Bad Request Invalid metadata Check datapackage.json is valid
413 Request Entity Too Large File too large Zenodo has 50GB limit per deposit