Skip to main content

API Reference

DroneDB Registry exposes a REST API for programmatic access to all features. All endpoints return JSON unless otherwise specified.

Interactive Documentation

Access the interactive API documentation at /scalar/v1 on your Registry instance (e.g., hub.dronedb.app/scalar/v1).

Authentication

Most endpoints require JWT authentication. Obtain a token via the authenticate endpoint:

POST /users/authenticate
Content-Type: application/json

{
"userName": "admin",
"password": "password123"
}

Use the token in subsequent requests:

Authorization: Bearer <token>

Tokens can be refreshed before expiration:

POST /users/authenticate/refresh
Authorization: Bearer <token>

Organizations

Base Route: /orgs

MethodEndpointDescription
GET/orgsList all organizations
GET/orgs/publicList public organizations (no auth required)
GET/orgs/{orgSlug}Get organization details
POST/orgsCreate organization
PUT/orgs/{orgSlug}Update organization
DELETE/orgs/{orgSlug}Delete organization

Datasets

Base Route: /orgs/{orgSlug}/ds

MethodEndpointDescription
GET/orgs/{orgSlug}/dsList all datasets in organization
GET/orgs/{orgSlug}/ds/{dsSlug}Get dataset entries
GET/orgs/{orgSlug}/ds/{dsSlug}/exGet extended dataset info
GET/orgs/{orgSlug}/ds/{dsSlug}/stampGet dataset checksum and metadata
POST/orgs/{orgSlug}/dsCreate dataset
PUT/orgs/{orgSlug}/ds/{dsSlug}Update dataset
DELETE/orgs/{orgSlug}/ds/{dsSlug}Delete dataset
POST/orgs/{orgSlug}/ds/{dsSlug}/renameRename dataset
POST/orgs/{orgSlug}/ds/{dsSlug}/chattrChange attributes (visibility)

Objects

Base Route: /orgs/{orgSlug}/ds/{dsSlug}

Listing & Searching

MethodEndpointDescription
GET.../list?path=List objects at path
POST.../listList objects (POST version)
POST.../searchSearch objects in dataset
GET.../obj?path=Get object info

Upload & Modification

MethodEndpointDescription
POST.../objUpload object (multipart form)
PUT.../objMove/rename object
DELETE.../obj?path=Delete object
DELETE.../obj/batchDelete multiple objects

Download

MethodEndpointDescription
GET.../download?path=Download object(s)
POST.../downloadDownload objects (POST version)
GET.../ddbDownload DroneDB index file

Visualization

MethodEndpointDescription
GET.../thumb?path=Generate thumbnail
GET.../tiles/{tz}/{tx}/{ty}.pngGenerate map tile
GET.../build/{hash}/*Get build files (COG, NXS, EPT)

Build Jobs

MethodEndpointDescription
POST.../buildStart build job for object
GET.../buildsList build jobs (paginated)
POST.../builds/clearClear completed build jobs

Tasks (Processing Platform)

Base Route: /orgs/{orgSlug}/ds/{dsSlug}/tasks

See the Processing Platform page for full documentation, tool reference, and examples.

MethodEndpointDescription
GET.../tasks/toolsList available tools with JSON Schema
POST.../tasksSubmit a new task (202) or get dedup hit (200)
GET.../tasksList tasks (?toolId=&state=&skip=0&take=50)
POST.../tasks/clearDelete all terminal tasks (?toolId= optional filter)
GET.../tasks/{id}Get full task status, progress, log tail, artifact
GET.../tasks/{id}/logIncremental log (?since={cursor})
GET.../tasks/{id}/resultDownload task artifact (range requests supported)
DELETE.../tasks/{id}Cancel or mark task as Deleted

Share

Base Route: /share

The Share API enables file uploads via the DroneDB CLI (ddb share).

MethodEndpointDescription
POST/share/initInitialize share session
GET/share/{token}Get share batch info
POST/share/{token}/uploadUpload file to share
POST/share/{token}/upload/chunkedUpload large file in chunks
POST/share/{token}/commitFinalize share
POST/share/{token}/rollbackCancel share

POST /share/init body fields:

FieldTypeDescription
tagstringFull org/dataset tag for the destination dataset (optional).
orgSlugstringDestination organization slug. When tag is omitted, the dataset slug is auto-generated.
datasetNamestringHuman-readable dataset name (optional).

Push

Base Route: /orgs/{orgSlug}/ds/{dsSlug}/push

The Push API enables syncing local datasets to Registry via the DroneDB CLI (ddb push).

MethodEndpointDescription
POST.../push/initInitialize push operation
POST.../push/uploadUpload file during push
POST.../push/metaUpload metadata
POST.../push/commitFinalize push

Metadata

Base Route: /orgs/{orgSlug}/ds/{dsSlug}/meta

MethodEndpointDescription
GET.../meta/listList all metadata keys
GET.../meta/{key}Get metadata values by key
POST.../meta/{key}Add metadata entry
POST.../meta/{key}/setSet/replace metadata
DELETE.../meta/{key}Remove all metadata with key
DELETE.../meta/{id}Remove specific metadata entry
POST.../meta/dumpExport all metadata

Users

Base Route: /users

Authentication

MethodEndpointDescription
POST/users/authenticateLogin (returns JWT)
POST/users/authenticate/refreshRefresh JWT token

User Management (Admin)

MethodEndpointDescription
GET/usersList all users
GET/users/detailedList users with extended info
POST/usersCreate user
PUT/users/{userName}Update user
DELETE/users/{userName}Delete user

Password Management

MethodEndpointDescription
POST/users/changepwdChange current user password
PUT/users/{userName}/changepwdChange user password (admin)

Roles

MethodEndpointDescription
GET/users/rolesList all roles
POST/users/roles/{roleName}Create role (admin)
DELETE/users/roles/{roleName}Delete role (admin)

Storage & Metadata

MethodEndpointDescription
GET/users/storageGet current user storage info
GET/users/{userName}/storageGet user storage info (admin)
GET/users/{userName}/metaGet user metadata
POST/users/{userName}/metaSet user metadata (admin)

Organizations

MethodEndpointDescription
GET/users/{userName}/orgsGet user's organizations
PUT/users/{userName}/orgsSet user's organizations (admin)

STAC

The STAC (SpatioTemporal Asset Catalog) API provides standardized access to public datasets.

MethodEndpointDescription
GET/stacRoot STAC Catalog
GET/orgs/{orgSlug}/ds/{dsSlug}/stacDataset STAC Collection

Browse STAC catalogs with tools like STAC Browser.

System

Base Route: /sys

MethodEndpointDescription
GET/sys/versionGet Registry version
GET/sys/featuresGet active feature flags and platform catalog (no auth required)
GET/sys/build-pending-statusGet background build job status
GET/sys/tasksList tasks across all users and datasets (admin only) (?toolId=&state=&userId=&skip=0&take=50)
POST/sys/import-datasetImport dataset from another Registry
POST/sys/import-organizationImport organization from another Registry
POST/sys/move-datasetsMove datasets between organizations (admin, enforced server-side)
POST/sys/merge-organizationsMerge one organization into another (admin, enforced server-side)
POST/sys/cleanupbatchesPurge expired or orphaned upload batches
POST/sys/cleanupdatasetsRemove empty dataset records
POST/sys/migratevisibilityMigrate dataset visibility from legacy format
POST/sys/cleanup-jobindicesPurge old job index records (optional ?retentionDays=N)
POST/sys/cleanupRun DroneDB cleanup on every dataset (admin only, async)
POST/sys/check-artifact-completenessScan all datasets and enqueue rebuilds for incomplete build artifacts (admin only, async)

GET /sys/features response fields

This endpoint is available without authentication and is used by the Hub frontend to discover platform capabilities.

FieldTypeDescription
organizationMemberManagementboolWhether org-level member management is enabled
userManagementboolWhether local user management is enabled (false when external auth is configured)
storageLimiterboolWhether per-user storage limiting is enabled
maxConcurrentDownloadsPerUserint?Concurrent download limit per user (null = unlimited)
disableAnonymousBulkDownloadsboolWhether anonymous bulk archive downloads are blocked
passwordPolicyobject?Active password complexity policy, or null
datasetThumbnailCandidatesstring[]Ordered list of dataset thumbnail file name candidates
maxExportSizeByteslong?Maximum raster export size in bytes (null = unlimited)
bulkDownloadAsyncThresholdByteslongSelection size threshold above which bulk downloads are routed to the async task
taskToolsarrayCatalog of available task tools (id, version, title, required access, artifact flag, extension)
taskStatesarrayTask state machine with {state, isTerminal} per entry
hubOptionsobject?Hub UI branding and feature flags
hubVersionstring?Semver of the Hub (Vue SPA) currently deployed
registryVersionstring?Registry backend assembly version
ddbVersionstring?Native DroneDB library version

Health Checks

EndpointDescription
/versionApplication version (no auth)
/quickhealthBasic health check (requires auth)
/healthFull health check (requires auth)

Error Responses

API errors return JSON with the following structure:

{
"error": "Error message description"
}

Common HTTP status codes:

  • 400 - Bad Request (invalid parameters)
  • 401 - Unauthorized (missing or invalid token)
  • 403 - Forbidden (insufficient permissions)
  • 404 - Not Found
  • 500 - Internal Server Error