A Python client library for interacting with the NDP EP API. This library provides a simple and intuitive interface for managing datasets, organizations, resources, and services through the API.
- Complete API Coverage: Support for all API endpoints including Kafka topics, S3 resources, URL resources, organizations, and services
- Authentication: Token-based and username/password authentication
- Search Functionality: Advanced search capabilities across datasets and resources
- Error Handling: Comprehensive error handling with meaningful error messages
- Type Hints: Full type hint support for better IDE integration
- Testing: Extensive test coverage (>70%) with unit and integration tests
pip install ndp-ep
from ndp_ep import APIClient
# Initialize client with token
client = APIClient(
base_url="https://your-api-endpoint.com",
token="your-access-token"
)
# List organizations
organizations = client.list_organizations()
print(organizations)
# Search datasets
results = client.search_datasets(
terms=["climate", "temperature"],
server="global"
)
# Register a new organization
org_data = {
"name": "my_organization",
"title": "My Organization",
"description": "A sample organization"
}
response = client.register_organization(org_data)
# Register a service
service_data = {
"service_name": "user_auth_api",
"service_title": "User Authentication API",
"owner_org": "services",
"service_url": "https://api.example.com/auth",
"service_type": "API",
"notes": "RESTful API for user authentication"
}
response = client.register_service(service_data)
# S3 Management Examples
buckets = client.list_buckets()
client.create_bucket("my-data-bucket")
# Upload and download files
with open("data.csv", "rb") as f:
client.upload_object("my-data-bucket", "datasets/data.csv", f)
file_content = client.download_object("my-data-bucket", "datasets/data.csv")
# Generate presigned URLs for secure file sharing
upload_url = client.generate_presigned_upload_url("my-data-bucket", "new-file.txt")
download_url = client.generate_presigned_download_url("my-data-bucket", "data.csv")
For comprehensive examples and use cases, check out our:
- Token-based authentication
- Username/password authentication
list_organizations()
- List all organizationsregister_organization()
- Create new organizationdelete_organization()
- Delete organization
search_datasets()
- Search datasets with advanced filtersadvanced_search()
- Advanced search with POST methodregister_url()
- Register URL resourcesregister_s3_link()
- Register S3 resourcesregister_kafka_topic()
- Register Kafka topicsregister_general_dataset()
- Register general datasetsupdate_url_resource()
- Update URL resourcesupdate_s3_resource()
- Update S3 resourcesupdate_kafka_topic()
- Update Kafka topicsupdate_general_dataset()
- Update general datasets (PUT)patch_general_dataset()
- Partially update general datasets (PATCH)delete_resource_by_id()
- Delete resource by IDdelete_resource_by_name()
- Delete resource by name
register_service()
- Register new services
list_buckets()
- List all S3 bucketscreate_bucket()
- Create new S3 bucketget_bucket_info()
- Get S3 bucket informationdelete_bucket()
- Delete S3 bucketlist_objects()
- List objects in S3 bucketupload_object()
- Upload object to S3 bucketdownload_object()
- Download object from S3 bucketdelete_object()
- Delete object from S3 bucketget_object_metadata()
- Get S3 object metadatagenerate_presigned_upload_url()
- Generate presigned upload URLgenerate_presigned_download_url()
- Generate presigned download URL
get_kafka_details()
- Get Kafka connection detailsget_system_status()
- Check system statusget_system_metrics()
- Get system metricsget_jupyter_details()
- Get Jupyter connection details
# Clone the repository
git clone https://github.com/sci-ndp/ndp-ep-py.git
cd ndp-ep-py
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install development dependencies
pip install -e .
pip install -r requirements-dev.txt
# Run all tests
pytest
# Run with coverage
pytest --cov=ndp_ep --cov-report=html
# Run specific test categories
pytest -m unit # Unit tests only
pytest -m integration # Integration tests only
# Format code
black ndp_ep tests
# Lint code
flake8 ndp_ep
# Type checking
mypy ndp_ep
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Add tests for your changes
- Ensure all tests pass and coverage is maintained
- Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Initial release
- Complete API coverage for all endpoints
- Authentication support (token and username/password)
- Search functionality
- Resource management (URL, S3, Kafka)
- Organization management
- Comprehensive testing suite