8000 Add Tropicos Integration for Aquatic Plants · Issue #256 · jra3/mulm · GitHub
[go: up one dir, main page]

Skip to content

Add Tropicos Integration for Aquatic Plants #256

Open

Description

@jra3

Description

Integrate Tropicos (Missouri Botanical Garden) as a data source for aquatic plant species taxonomy and images.

Background

Tropicos is a comprehensive botanical database maintained by Missouri Botanical Garden:

  • 1.3+ million plant names with taxonomic data
  • Authoritative source for plant nomenclature
  • High-quality herbarium specimen images
  • Free API access for non-commercial use
  • Strong coverage of aquatic plants

Website: https://tropicos.org/

Benefits for BASNY

  • Plant-specific expertise: Better than general databases for plants
  • Taxonomic authority: Current accepted names and synonyms
  • Specimen images: Scientific-quality photographs
  • Distribution data: Native ranges and habitats
  • Nomenclatural history: Track name changes over time

API Overview

Base URL: https://services.tropicos.org/

Key Endpoints:

  • GET /Name/Search?name={scientific_name} - Search by name
  • GET /Name/{id} - Get name details
  • GET /Name/{id}/Synonyms - Get synonyms
  • GET /Name/{id}/Images - Get specimen images

Authentication: Requires free API key

Rate Limiting: 500 requests/day for free tier, use 500ms delay

Implementation Plan

1. Register for API Key

2. Create Integration Client

// src/integrations/tropicos.ts
export interface TropicosResult {
  found: boolean;
  name_id?: number;
  species_url?: string;
  accepted_name?: string;
  synonyms?: string[];
  images?: Array<{
    url: string;
    specimen_id?: string;
    copyright?: string;
  }>;
}

export async function getExternalData(
  genus: string,
  species: string
): Promise<TropicosResult>;

3. Create Sync Script

scripts/sync-tropicos-all-species.ts --species-type=Plant

Focus on plant species only.

4. Configuration

// config.json
{
  "tropicos": {
    "apiKey": "YOUR_API_KEY",
    "baseUrl": "https://services.tropicos.org",
    "rateLimit": 500
  }
}

Tasks

  • Register for Tropicos API key
  • Create `src/integrations/tropicos.ts` client
  • Implement name search and image retrieval
  • Create sync script for plant species
  • Add to master orchestrator (optional)
  • Test with aquatic plant species
  • Handle API rate limits (500/day)
  • Store specimen attribution properly
  • Update documentation

Acceptance Criteria

  • Tropicos API client successfully queries plant species
  • Images downloaded with specimen attribution
  • Rate limiting stays under 500 requests/day
  • Species URLs added to external references
  • Sync integrates with existing workflow
  • Documentation updated

Rate Limit Considerations

Free tier: 500 requests/day

  • Conservative estimate: ~200 plant species in database
  • Requests needed: 1 per species = 200 total
  • Conclusion: Should fit within daily limit for initial sync
  • Daily incremental: <10 requests/day after initial sync

Priority

Low - Nice to have for plant coverage, but Wikipedia/GBIF already cover most plants.

Related Resources

Related to #240 (External Data Sources Integration)

Activity

  1. added
    enhancementNew feature or request
    databaseDatabase schema, migrations, and data integrity
    priority:lowLow priority - nice to have
    on Dec 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    databaseDatabase schema, migrations, and data integrityenhancementNew feature or requestpriority:lowLow priority - nice to have

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0