Repository navigation
Open
Labels
databaseDatabase schema, migrations, and data integrityDatabase schema, migrations, and data integrityenhancementNew feature or requestNew feature or requestpriority:lowLow priority - nice to haveLow priority - nice to have
Description
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 nameGET /Name/{id}- Get name detailsGET /Name/{id}/Synonyms- Get synonymsGET /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
- Sign up at https://tropicos.org/home
- Request API key (free for non-commercial use)
- Store in config.json
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=PlantFocus 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)
Metadata
Metadata
Assignees
Labels
databaseDatabase schema, migrations, and data integrityDatabase schema, migrations, and data integrityenhancementNew feature or requestNew feature or requestpriority:lowLow priority - nice to haveLow priority - nice to have
Activity