Introduction
Miura Nexus API - High-level Python client for the Nexus platform
Miura Nexus API
The Miura Nexus API is a high-level Python client library for the Nexus platform. It provides a clean, intuitive API for managing projects, collections, and data workflows.
Overview
The Nexus API provides a Pythonic interface to the Nexus platform, hiding the complexity of the underlying API calls behind simple Python classes and methods. It enables users to manage projects, collections, and data through a familiar Python interface.
Advanced Features
- Retry Policies: Configure automatic retries for network operations
- Hooks: Add observability hooks for request/response/retry events
- Error Handling: Comprehensive error management with structured exceptions
From PyPI
bash
pip install miura-nexus
Quick Start
Authentication
The Nexus API uses token-based authentication. Set your API key using one of these methods:
Option 1: Environment Variable (Recommended for Services)
bash
export MIURA_NEXUS_API_KEY="your-api-key-here"
Option 2: CLI Storage (Recommended for Interactive Use)
bash
# Set your authentication token
miura-auth token set --token "your-api-key-here"
# Verify token is stored
miura-auth token status
Basic Usage
python
import asyncio
from miura.api import AsyncNexus
from miura.logging import get_logger
logger = get_logger(__name__)
async def main():
async with AsyncNexus() as nexus:
# List projects
projects = await nexus.list_projects()
logger.info(f"Found {len(projects)} project(s)")
# Create a project
project = await nexus.create_project("my-project")
logger.info(f"Created project: {project.name}")
# Create a collection with schema
collection = await project.create_collection(
collection_name="my-collection",
schema=[{"pattern": ".*\\.vtk$", "min_occurrence": 1}]
)
logger.info(f"Created collection: {collection.name}")
asyncio.run(main())
## Documentation Structure
### Getting Started
- **[Getting Started Guide](/docs/v0.20.1/getting-started)** - Start here! Get up and running quickly with authentication, configuration, and basic usage examples.
### Progressive Tutorials
These tutorials are designed to be followed in order, each building on the previous one:
1. **[Projects and Collections](/docs/v0.20.1/projects-and-collections)** - Create and manage projects and collections using different navigation styles
2. **[Schemas](/docs/v0.20.1/schemas)** - Understand schemas as quality gates for data ingestion
3. **[Uploading Data](/docs/v0.20.1/uploading-data)** - Upload data to collections with automatic schema validation
4. **[Fetching Data](/docs/v0.20.1/fetching-data)** - List, iterate, retrieve, and download collection items
5. **[End-to-End Workflows](/docs/v0.20.1/end-to-end-workflows)** - Complete, real-world workflows combining all features
## Key Concepts
### Navigation Styles
The API supports two navigation styles, both equally supported:
- **Object-Oriented**: `nexus.get_project()` → `project.get_collection()` → `collection.get_item()`
- **Path-Based**: `nexus.get("project/collection/item")`
### Schemas as Quality Gates
**Schemas are quality gates for data ingestion.** They ensure:
- Only properly structured data enters your collection
- Data consistency across all uploads
- Early detection of problems (during prevalidation)
- Clear documentation of expected data structure
### Async vs Sync
- **Async API** (`miura.api`): Primary interface, use for new code
- **Sync API** (`miura`): Compatibility layer for synchronous code or Jupyter notebooks
:::tip
New to the Nexus platform? Start with our [Getting Started guide](/docs/v0.20.1/getting-started) to learn the fundamentals before diving into advanced features.
:::